Watch for
Approve a bounded observation plan, keep checking without an open session, and turn confirmed findings into prepared work.
Watch for a change, not a reminder
A Watch for is a task that keeps looking for evidence: an upstream release, a merged pull request, a deployment or a new problem. It owns an approved observation plan and survives between checks without keeping a coding session alive. Its task type is watch.
Use a todo when you want a reminder to surface on a date or condition. Use a Watch for when you need repeated observations, evidence and a defined response to a finding. Following a task only subscribes you to that task's activity; it does not observe sources.
From intent to an armed plan
- Create a task with type Watch for and open its Watch for section. A pending Intake draft must be accepted before it can watch anything.
- Describe What to watch for, then choose Draft plan with Eve. Or choose Write plan to author it without AI.
- Review the goal, sources, evidence needed for a match, lifetime, minimum/maximum interval, daily budgets, owner and follow-up. Eve's notes explain assumptions or sources the workspace could not offer.
- Choose Arm revision … for the exact revision you reviewed. Saving or drafting a plan does not arm it.
Every saved plan edit creates a new, unarmed revision and stops checks under the old approval. Review and arm again. Adaptive timing inside approved bounds does not create a revision.
- Once (
once) — stops after its finding and follow-up preparation are recorded. The Watch task can be done while the proposed implementation still waits in Intake or its follow-up is held. - Ongoing (
ongoing) — keeps watching for distinct findings. Unchanged evidence does not create another finding, even after re-arming a later revision.
An optional end time stops new checks after that time; it is not evidence that the goal was met. Revise the plan to keep watching.
Choose sources the workspace can read
A plan names at most eight sources. Availability is checked when saving and arming, and access is resolved again on each check.
| Source | What it reads and needs |
|---|---|
Vitrinka fact (vitrinka) | Project truth in the todo condition grammar: pr <n> [merged|closed], release cut|next, deployed <env> [<sha>], or after <id>. A facts-only plan is decided by the server, without Eve; all named facts must hold. Free-text conditions and session-local path/task conditions are not supported here. |
GitHub (github) | Releases, tags, issues or pull requests from a named owner/repo, optionally filtered by title words. An admin connects the workspace's GitHub App with access to that repository; private repositories need the same installation access. |
Hlídač problems (signals) | Open problem groups already recorded for a project routed by a configured Hlídač source, including Sentry/alert input. This is a read of Vitrinka's local problem record, not a new direct Sentry connector. |
Public page or feed (page, feed) | Text from a public page or RSS/Atom feed at an approved URL. No login, shell or browser session. Fetches are bounded and reject private-network destinations. |
Slack (slack) | A selected channel, optionally a thread and matching words. An admin supplies a read-only Slack connection and explicit channel allowlist in workspace integrations; the app also needs access to the selected conversation. A plan cannot scan other channels or send messages. |
Removing a GitHub installation, disconnecting Slack or removing a channel takes effect on later reads. Fix the connection or select an available source; a saved plan is not a permanent access grant.
Read the outcome and health
Each check reports one of three outcomes:
- Match (
match) — readable evidence supports a new finding, with source citations and observation times. - No match (
no_match) — the available evidence does not show a new match; previously handled findings are not new. - Unable to verify (
unable) — evidence is inaccessible, missing or inconclusive, or the check could not be interpreted. It is never an all-clear. A planned release date is not an actual release; an unreadable source is not proof that nothing changed.
The section shows last/next check, today's and total checks/tokens, findings and check history. Health explains what is happening and gives a recovery action:
| Health | What to do |
|---|---|
idle | Write and arm a plan, or resume a deliberately paused watch. A cancelled watch stays stopped. |
ok | Checks can proceed, or the one-shot found its evidence and prepared its follow-up. Read the accompanying diagnosis, not the badge alone. |
degraded | One or two checks could not verify the goal. Read the diagnosis; retries back off automatically inside the plan's bounds. |
failing | Three or more checks could not verify it. Repair the named source/permission/backend problem, then request a check. |
blocked | Follow the specific fix: enable Eve, wait for the daily budget, revise an expired plan, reopen a closed task, or have an editor arm the revision after its approving member left the workspace. |
Timing and budgets
The plan's interval bounds must be between 15 minutes and one week. Eve may suggest a next interval only inside those bounds; failures back off inside them too. Missed ticks coalesce to one current check, not a burst of historical calls.
- Checks per day: 1–96 per watch, counted on UTC days. Manual and unsuccessful checks consume a slot too.
- Tokens per day: optional, from 40,000 up to 2,000,000;
0leaves the check count as the only plan budget. It is a hard ceiling: a check starts only while the most one check can spend (40,000 tokens) still fits under what is left of the day's budget. - Workspace cap:
watch.checks.perDaydefaults to 500 across all watches. Accepted settings are 0–10,000;0removes this workspace cap, not the per-watch limits.
When a daily limit stops a check, the diagnosis names it and the next attempt moves to 00:05 UTC the following day. A check request cannot bypass budgets. Raising a plan budget is an edit that needs review and arming again.
What a finding prepares
The approved follow-up chooses what happens for each distinct finding:
- Propose (
propose) — one evidence-linked draft enters Intake. A triager decides whether to accept, decline or merge it; the watch never auto-accepts new work. - Ready (
ready) — links an existing accepted task and records whether its own prerequisites allow work at preparation time. Open human/action gates, dependencies and other holds remain authoritative; a finding does not complete them. The findings list reads the follow-up's prerequisites again each time it is shown, so “ready” always means ready now. - None (
none) — records the finding without preparing a task.
The owner receives at most one notice per finding; an empty owner falls back to the task's assignee, then its reporter. Retries reuse the finding and its prepared draft rather than filing duplicates.
A finding is not execution approval. No watch launches a coding session, edits a repository, opens a pull request or deploys. Prepared work retains its normal implementation and release gates.
Pause, resume, check or cancel
- Pause holds an armed watch and fences in-flight results.
- Resume keeps the reviewed approval and waits out the plan's minimum interval since the last check. If the original approving member lost workspace membership, an editor must arm it again instead.
- Check now requests a check of an armed watch, subject to the 15-minute floor since the last check and the same daily budgets. It is queued, not a promise of an immediate result.
- Edit plan stops the old approval; save, review and arm the new revision.
- Cancel watch stops it permanently. Create a new watch rather than resuming a cancelled one. A settled one-shot can instead be revised and re-armed to watch a new goal.
Enterprise and AI switches
| Switch | Effect on Watch for |
|---|---|
AIR_GAP | Blocks public page/feed, GitHub and Slack observations. Local Vitrinka facts and already-recorded Hlídač problems remain readable. Eve requires an available in-perimeter backend. |
Workspace watchOutboundOff | Disables those external watch sources without disabling local observations. It does not itself disable AI; use the AI controls separately. |
Automation watch-check | Enables/disables automatic Eve interpretation; on by default. Does not block requested plan drafting or facts-only evaluation. |
Workspace AI off (aiOff) | Blocks Eve plan drafting and interpretation. Hand-written plans and facts-only checks still work. Non-fact plans report unable to verify rather than no match; source reads can still happen before the AI gate. |
Hlídač observations still need Eve to interpret them; being local does not make them facts-only. Disabling Eve does not silently cancel the watch or stop claimed checks from counting toward its budget.
Agent and terminal doors
Create with create {kind: "task", type: "watch", …}. MCP update_watch takes op: "intent" | "draft" | "plan" | "arm" | "pause" | "resume" | "cancel" | "check". plan carries the whole plan; arm must name the reviewed revision.
Read get_task {id, view: "watch"} for the plan, health, usage and permitted actions; view: "watch-history" reads checks and findings.
The terminal uses vitrinka task watch <id> [verb]: omitted verb means show; the others are history, intent, draft, plan, arm, pause, resume, cancel and check. Use its help for flags and JSON output.
vitrinka task watch 42 show
vitrinka task watch 42 draft --intent "Tell me when the upstream fix is released"
# Read the returned plan before approving its revision.
vitrinka task watch 42 arm --revision 1
vitrinka task watch 42 history