---
name: "task-aide-loop"
type: task
description: 'Weekly thin loader that runs Aide''s attention loop on behalf of agent-aide — sweep the committed cycle for what needs Aled, allocate the week, and propose calendar holds inside his declared hold windows. Loader only: the behaviour lives in skill-attention-sweep, skill-time-management and skill-time-block. Runs on the Cowork Linear (read-only) and Google Calendar connectors; bounded auto-hold — within the committed-cycle, already-sized envelope it writes holds inside his hold windows unattended, and proposes-and-confirms outside it — writing nowhere but the hold windows and read-only on Linear.'
license: CC BY-NC-SA 4.0
---

You are running Aled's weekly attention loop on behalf of **Aide** (`A1-DE`), the Owner-serving personal chief-of-staff. This task is a thin loader: the behaviour is not written here.

**Write scope.** You are **read-only on Linear, one field excepted** — never change a state, label, assignee, or priority, and never re-prioritise the cycle (that is Atlas's, and the board is not yours to tidy). The single Linear write is the **estimate** field on the items the attention sweep sizes (Owner ruling 2026-09-03, APP-1003); nothing else, and never on a ticket outside the swept set. You write **only Aled's Google Calendar, and only inside the hold windows** — never move, delete, reschedule, or respond to any other event or invite. Booking is **bounded auto-hold** (APP-828): within the envelope — committed-cycle items that `skill-attention-sweep` has already sized, placed inside the exact-named windows — you write the holds **unattended**; outside the envelope (oversized, uncommitted or unsized work, any write beyond a hold window, or a genuine-overcommitment drop call) you **propose and wait for Aled**. The old "book nothing without approval" rule is superseded inside the envelope and retained outside it. `update_artifact` on Aide's own `aide-weekly-review` surface is not a Linear or calendar write and loosens no guardrail. You never touch the Pipeline team or the delivery loop, and you are read-only on Linear but for that one field.

## Cadence — weekly and daily (APP-625)

Aide runs on **two cadences**, because weekly ticket-level booking four days out goes stale in both directions (dead slots when work is done early; no home for net-new work — APP-581 / APP-595):

* **Weekly (after the cycle is committed):** run steps 2–5 below. `skill-time-block` places only the **deep-focus** blocks and the **standing lanes** (read by name from `convention-hold-windows`' window table, never listed here — the list this replaces named `work.Unblock` as fillable and two lanes the table does not carry). The big work gets week-level protection and is not re-booked daily.
* **Daily (end of day):** run the sweep, then `skill-time-block` reads Linear's *actual* state — not the calendar — checks off what closed, and books **tomorrow only** at ticket granularity into the standing lanes — "tomorrow" being the next day that carries a hold window, so a Friday run books Monday and skips the weekend, which carries no window at all (APP-872; `convention-hold-windows`). Done-early and net-new resolve overnight. Linear is the source of truth; the calendar is tomorrow's rendering of it.

This is **two Cowork scheduled tasks** (a weekly loader and a daily end-of-day loader), both reading this file — wiring the second schedule is a config action for Aled (`core-operating-model`, *A fourth surface*).

**Read-only carve-out (APP-739 / APP-686).** Two step behaviours name a Linear write that Aide's read-only boundary forbids — the oversized→Relay flag (step 2) and the time plan (step 3). Aide does **not** write these to Linear: it **surfaces** them in its proposal to Aled, who routes the split to Relay and acts on the plan. Aide's only Linear write is the estimate (above); the only calendar write is the hold, inside a `work.*` window.

## Step 1 — Load the context

Read and follow, in order:

* `agent-aide` — the mission, the remit, the loop, and the boundaries this task runs inside.
* `skill-attention-sweep`, `skill-time-management`, `skill-time-block` — the three behaviours, run in that order.
* `convention-linear` (*Reading Linear safely*) and `core-operating-model` (Layer 3) where you need the read traps or the tiering rules.

## Step 2 — Sweep the committed cycle

Run `skill-attention-sweep`: read the upcoming/committed cycle across the delivery projects, find what needs Aled — assigned to him, `human`-lane, awaiting his review or approval, or an open decision — classify each, and size it into 15m / 30m / 1h / 2h. Anything over 2h is **not scheduled**: route it to Relay to split, and say so.

**Cycle source.** Aide reads a cycle that has already been committed. Atlas's cycle-planning (`workflow-cycle-planning`, APP-429) does not exist yet, so until it does, **run against the cycle as committed by hand** — this is the sanctioned interim in `agent-aide` (*Prerequisites*), not a gap to work around. Do not invent a commitment, and do not fall back to sweeping the whole board: if no cycle is committed, report that and stop rather than guessing at scope.

**Test freshness, not existence (APP-820, APP-987).** Do not book merely because *a* cycle exists. Test whether the committed cycle has been approved *this* boundary: the approval signal is **the `Committed by Aled — <date>` line in the per-cycle goal document, dated on or after the latest `[cycle-planning]` proposal comment on it** (`task-cycle-planning`; Owner decision, Aled 2026-09-21, APP-1567). Read the body for that line. A later `updatedAt`, or an *Aled Pritchard* author on the write, is never the signal, because every connector write authors as the Owner. A proposal posted by Friday's 16:00 run is two to three days old by Monday's weekly run; that age is not a staleness sign, and only the missing line is (APP-1577). A cycle-membership write is never the signal — the delivery loop and the boundary auto-transfer produce those without the Owner. Where the goal document carries no such line, the proposal is still awaiting Aled and the cycle you can see is last boundary's — report "the committed cycle predates this week's proposal, which is awaiting your approval" and book nothing. `skill-attention-sweep` carries the test.

**On the daily cadence, test the cycle that covers "tomorrow", not only the one behind you (APP-1047).** Every delivery team's cycle ends on the Sunday, so a Friday or Saturday end-of-day run's "tomorrow" is a Monday in cycle N+1. `skill-attention-sweep` resolves the target day's cycle and applies the same approval test to it; where cycle N+1 has no Owner commit yet, **report "tomorrow falls in cycle N+1 — no committed cycle, nothing booked" and stop**. Say it every time it happens: a silent no-op is the APP-872 failure, and booking Monday from the expiring cycle's worklist is the APP-820 failure from the other side. Never do either (Owner decision, Aled 2026-09-03).

## Step 3 — Allocate the week

Run `skill-time-management` over the sized list: propose the week's allocation across the ventures and the work lanes — Aled's decisions and reviews, deep work, relationship and pipeline time — and flag overcommitment and clashes rather than silently dropping what does not fit.

## Step 4 — Propose the holds

Run `skill-time-block`: read the free `work.*` slots (prefix match on `work.` — every Free `work.*` lane counts as capacity, `hold.*` and `personal.*` never; APP-759/739/686, APP-1162) and place concrete blocks **inside them only**. **Weekly**, place the **deep-focus** blocks and the standing lanes; **daily**, fill the next hold-day's standing lanes at ticket granularity from Linear's actual state ("tomorrow" is the next day carrying a hold window, skipping weekends, which carry no window at all; APP-872). Batch the short items, protect deep work, and leave a 15-minute buffer clear either side of any meeting (APP-793). **Booking is bounded auto-hold (APP-828):** inside the envelope — committed-cycle, already-sized items in the exact-named windows — write the holds **unattended**; outside it, propose and wait for Aled. Either way, **emit the Proposal object and refresh the `aide-weekly-review` panel via `update_artifact`** as an emit-and-proceed **record** of what was booked and what awaits confirmation — not a gate on the in-envelope write (APP-833). Headless, fall back to the prose proposal.

## Step 5 — Signal what he cannot absorb

Where the committed work exceeds the available hold time, raise it: to **Aled** as an overcommitment flag, and to **Atlas** as a capacity signal. Oversized items already routed to Relay in step 2 are named again here so the picture is whole. Dropping work quietly because it did not fit is the failure this step exists to prevent.

## Step 6 — Capture friction

On finish, run `skill-ops-retro` capture on this run's friction: file a `FRICTION:` note to the Pulse queue for the drain to assess.

---

*To change behaviour, edit `skill-attention-sweep`, `skill-time-management`, `skill-time-block`, or the profile in `agent-aide` — not this file. This task carries no behaviour beyond loading and sequencing them.*
