ur-agent 1.47.1 → 1.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,6 +9,52 @@ reproducible autonomous software engineering agent: every substantial task can
9
9
  be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
10
10
  spec as the durable source of truth and command evidence as the success gate.
11
11
 
12
+ ## v1.48.0 Additions
13
+
14
+ - `ur cloud --runner managed` persists remote environment/session lifecycle,
15
+ cursor reconciliation, bounded output, explicit remote branches, cancellation,
16
+ and idempotent steering. Only PASS results with safe review branches are
17
+ eligible; all eligible results receive deterministic ranks rather than an
18
+ unverified comparative-quality score. Cancellation wins over a concurrent
19
+ session start. The authenticated A2A compatibility task API exposes the same
20
+ owner-isolated steering boundary for mobile clients.
21
+ - `ur learn playbooks` mines repeated proof-backed run shapes behind a Wilson
22
+ confidence floor, rejects unsafe/secret-like traces, and requires explicit
23
+ approval before materializing a normal validated workflow. Disabling verifies
24
+ that workflow and moves it to the private disabled archive.
25
+ - Project task memory accepts content-digested file and run citations plus
26
+ explicit user/web citations. Resolution revalidates freshness and excludes
27
+ rejected, superseded, stale, or missing evidence by default.
28
+ - `ur agent-ci` runs untrusted event tasks in detached worktrees with actor
29
+ policy, read-only GitHub permissions, scrubbed code subprocesses, bounded
30
+ redacted output, exact NUL-delimited path policy, pre/post verification-state
31
+ binding, and a post-check hash-addressed patch for a separate publish decision.
32
+ - Eval cases capture redacted control-flow trajectories and grade tool choice,
33
+ order, success, repetition, failures, permission denials, and turns. `ur eval
34
+ gate` makes those scores and outcome/cost/duration regressions enforceable.
35
+ - `ur desktop-qa` drives bounded Electron fixtures and attaches teardown-safe,
36
+ masked screenshots, hashes, diagnostics, and reports to the artifact review
37
+ surface. Raw video/trace evidence is available only without selector
38
+ redaction; incompatible fixtures fail validation. Attachment sources reject
39
+ symlinks and unsafe MIME types download as sandboxed octet streams.
40
+ - `/btw` is now a durable, private, hash-chained side chat with
41
+ create/continue/list/show/rename/close lifecycle and cancellation, while every
42
+ fork remains one-turn and tool-free.
43
+ - `ur workspace` enrolls canonical repository identities, validates a
44
+ dependency DAG, serializes writers per repository, uses isolated worktrees,
45
+ resumes private state, runs repository gates, and emits PR/rollback plans
46
+ without executing them.
47
+ - `ur arena` now has deterministic, model, and hybrid judges. Only
48
+ proof-backed, verification-passing, safety-eligible candidates reach the
49
+ strict anonymous judge schema; oversized full diffs are excluded rather than
50
+ partially judged, and apply requires the original clean base.
51
+ - Background, managed-cloud, A2A/mobile, artifacts, evals, and the standard CLI
52
+ share bounded/idempotent control, nonzero CI failure semantics, private state,
53
+ and reviewable evidence.
54
+
55
+ See [Frontier Agent Workflows](FRONTIER_AGENT_FEATURES.md) for commands and
56
+ trust boundaries.
57
+
12
58
  ## v1.47.0 Additions
13
59
 
14
60
  - `ur ag-ui serve` adds a secure AG-UI HTTP/SSE boundary for user-facing
@@ -2,7 +2,7 @@
2
2
 
3
3
  UR is a provider-flexible, local-first terminal coding agent. This page tracks
4
4
  how UR maps to current agent-platform trends and where future work should go
5
- next. The factual comparison below is a **2026-07-15 research snapshot**; run
5
+ next. The factual comparison below is a **2026-07-26 research snapshot**; run
6
6
  `ur agent-trends` for the versioned machine-readable report and re-check the
7
7
  linked primary sources before acting on prerelease standards.
8
8
 
@@ -75,18 +75,23 @@ Inside an interactive session:
75
75
  | MCP Tasks and MCP Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-http` | Reconcile final extension schemas and broaden client interoperability tests |
76
76
  | A2A / Agent Card interoperability | Covered | Stable-SDK v0.3 plus strict v1 ProtoJSON JSON-RPC/HTTP+JSON, negotiated cards, tenant isolation, durable artifacts, and TCK coverage | Adopt the stable v1 SDK when released; add signed-card verification and streaming only with truthful end-to-end tests |
77
77
  | AG-UI agent-to-frontend interoperability | Covered | Official-schema HTTP/SSE adapter, truthful capabilities, ordered state/text/tool events, cancellation, exact CORS, bounded requests/output, and loopback-or-bearer security | Add independent frontend fixtures before advertising optional interrupts, binary/WebSocket transport, or client tools |
78
- | Durable workflows and checkpoints | Covered | resume, rewind, `ur bg` background runs, optional worktrees/PRs, cron/workflow internals, file restore | Publish a checkpointed workflow format for repeated automations |
78
+ | Durable workflows and checkpoints | Covered | resume, rewind, steerable `ur bg`/managed-cloud runs, optional worktrees/PRs, cron/workflow internals, file restore, and resumable multi-repo DAG state | Add authenticated cross-machine checkpoint replication |
79
+ | Managed cloud workers | Covered | `ur cloud --runner managed` persists remote session IDs/cursors/branches, reconciles lifecycle, accepts idempotent steering, deterministically ranks only PASS results with safe review branches, and never silently merges | Add provider-neutral managed-runner adapters behind the same lifecycle |
80
+ | Mobile agent steering | Covered | authenticated owner-isolated A2A compatibility task messages plus bounded background/cloud steering and cancellation | Add push notifications without widening delegated scopes |
81
+ | Durable side chats | Covered | private hash-chained `/btw` create/continue/list/show/rename/close history with tool-free one-turn forks and cancellation | Add optional encrypted export/import |
82
+ | Multi-repository coordination | Covered | canonical repository/remote identity, dependency DAGs, one writer per repo, isolated worktrees, resume, verification, and explicit PR/rollback plans | Add forge-neutral stacked-review adapters without automatic publishing |
83
+ | Self-learning playbooks | Covered | proof-backed candidates, confidence floor, unsafe-trace rejection, explicit approval/rejection/disable, and standard workflow execution | Add drift detection and approval renewal when evidence changes materially |
79
84
  | Multi-agent orchestration | Covered | built-in planning, exploration, verification, and general-purpose agents; custom agents | Document reusable team patterns and role selection |
80
- | Long-term memory | Partial | Existing memory/retrieval plus a provenance-rich SHA-256 project task-memory chain with private atomic writes, verification, quarantine, and rollback | Extend the same deletion and integrity guarantees to team, semantic, embedding, and legacy stores |
85
+ | Long-term memory | Partial | Existing retrieval plus a provenance-rich SHA-256 task-memory chain, file/run/user/web citations, freshness resolution, private atomic writes, quarantine, and rollback | Extend citation/deletion/integrity guarantees to semantic, embedding, and legacy stores |
81
86
  | Portable Agent Skills | Covered | Native and `.agents/skills/` project/user discovery, strict validation, deterministic tree/permission digests, Ed25519 signing, trusted keys, and invocation-time integrity checks | Require registry attestations and dependency review before community one-command installation |
82
87
  | Semantic codebase retrieval | Covered | local embedding-based code index (`ur code-index`), opt-in `CodeSearch` tool, incremental re-index, auto-reindex watcher, Ollama embeddings | Add richer symbol-aware ranking |
83
88
  | Reliable repo editing | Covered | `ur repo-edit` builds a file/symbol index, performs AST-aware JS/TS identifier rename planning, previews patches before writing, and applies multi-file edits transactionally with rollback on syntax or check failure | Extend AST edits beyond identifier rename into import moves and signature-aware refactors |
84
89
  | Permission and safety policy | Covered | `ur safety`, `.ur/safety-policy.json`, pre-Bash safety evaluation, read/write/execute/network command classes, destructive-command approval, sandbox recommendations, and secret exfiltration denial | Record sandbox attestation in every risky command's evidence trail |
85
90
  | Project context management | Covered | `ur context-pack`, `.ur/project-manifest.json`, `.ur/context/*`, Project DNA, instruction files, verify gates, and task memory for decisions/constraints/commands/diffs | Feed the generated project manifest into subagent prompt selection and verifier gate choice |
86
91
  | AGENTS.md interoperability | Covered | `AGENTS.md` loaded as runtime project context (before `UR.md`), plus imported by the `/init` command | Keep aligned as the AGENTS.md spec evolves |
87
- | Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks, WebSearch, WebFetch, risky-action approval | Add more release fixtures with screenshots and replay assertions |
88
- | Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers | Add claim-to-source mapping for web/MCP answers |
89
- | Evals and observability | Partial | verifier gates, `.ur/verify.json`, `/verify`, `/trace`, OpenTelemetry hooks, replayable evals, dashboard, benchmark adapters | Grade complete trajectories in CI and publish versioned pass rates by category |
92
+ | Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks, plus bounded Electron desktop fixtures with assertions, teardown, masked screenshots, and optional raw video/trace only when selector redaction is disabled | Add OS-native non-Electron fixtures behind equally testable drivers |
93
+ | Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers, and task-memory citations with digest freshness | Add authenticated reopening for user citations and explicit network refresh for web/MCP citations |
94
+ | Evals and observability | Covered | isolated eval worktrees, redacted structured trajectories, policy/outcome/cost/duration CI gates, reliability reports, dashboards, benchmark adapters, and OpenTelemetry | Publish opt-in signed versioned pass-rate snapshots by category |
90
95
  | Standard GenAI telemetry | Covered | Explicit OTLP/console exporters; GenAI inference, agent/workflow, tool, memory, token, cache, response, latency, streaming time-to-first-chunk/inter-output-chunk, and error semantics; content off by default | Add trajectory policy graders and cross-provider dashboards without increasing content capture/cardinality |
91
96
  | Test-first execution | Covered | `ur test-first` detects compile/test/lint commands, stores failure traces, retries through a fix agent, and installs detected commands into `.ur/verify.json` for edit-time gates | Add per-package command plans for large monorepos |
92
97
  | Security and prompt-injection resistance | Covered | allow/ask/deny permissions, shell safety analysis, secret scan, untrusted web-content guidance, OS-level execution sandbox (macOS Seatbelt, Linux bubblewrap) | Continuously test web/MCP/repository/skill/memory injection, confused-deputy, and tool-abuse cases |
@@ -94,9 +99,9 @@ Inside an interactive session:
94
99
  | Multimodal workflows | Partial | `/image`, `/video`, `/youtube`, `/voice`, browser workflows | Add model-aware multimodal capability reporting for local Ollama setups |
95
100
  | Spec-driven development | Covered | `ur spec` scaffolds requirements/design/tasks under `.ur/specs/`, tracks phase/approvals, and runs the Spec Kit / Kiro task list one task at a time | Add bidirectional sync with an external `specs/` directory |
96
101
  | Capability-aware model escalation | Covered | `ur escalate` selects fast/oracle tiers from `model-doctor`, runs routine work fast, and auto-escalates hard/failed work to the strong local model | Learn per-model success rates to tune the difficulty threshold |
97
- | Best-of-N agent judging | Covered | `ur arena` runs N agents per task in isolated worktrees and judges diffs with the self-review gate; winner is selectable/appliable | Add an optional model judge alongside the deterministic scorer |
98
- | Self-healing CI | Covered | `ur ci-loop` reports its resolved cwd, preserves assertion/stack context, stops no-test configuration failures before invoking a fixer, and re-runs real failures with bounded retries; commits/pushes require explicit flags and are self-review gated | Wire to `ur trigger` so a failed CI webhook can explicitly launch the loop |
99
- | Verifiable artifacts | Covered | `ur artifacts` records plans/diffs/test-runs with approve/reject/feedback under `.ur/artifacts/`; comments steer active background agents through stream-json inbox injection | Attach browser-QA screenshots and link artifacts to claim-ledger entries |
102
+ | Best-of-N agent judging | Covered | `ur arena` verifies isolated candidates, gates safety eligibility, and supports deterministic, strict anonymous model, or hybrid judging with clean-base apply | Calibrate judge agreement across local/provider model families |
103
+ | Self-healing and agentic CI | Covered | bounded repair loops plus `ur agent-ci` actor policy, isolated worktrees, credential separation, safe event ingestion, redacted/hash-addressed artifacts, and separate publishing | Add forge-neutral workflow compilers with the same trust split |
104
+ | Verifiable artifacts | Covered | plans/diffs/tests plus hashed screenshot attachments and privacy-compatible optional video/trace attachments, approve/reject/feedback, local previews, and steering links | Link every QA attachment directly to claim-ledger entries |
100
105
  | Native IDE review | Covered | `ur ide diff` bundles, a VS Code tree/webview/comment surface with background task controls, and a buildable JetBrains ACP client with cancellation | Add signed marketplace packaging and keep behavior parity covered in editor-host integration tests |
101
106
  | ACP / IDE agent server | Covered | Official-SDK ACP v1 with durable list/load/delete/resume/close, exact replay, modes, config options, commands, permissions, MCP, roots, streaming, and cancellation | Add editor-host interoperability fixtures before expanding optional UX capabilities |
102
107
  | Provider-native durable inference | Covered | Chat Completions remains default; opt-in Responses adds SSE, background polling/cancel, WebSocket continuation, compaction, deferred tools, and `store=false` | Generalize explicit provider capability discovery without silently emulating native features |
@@ -153,26 +158,26 @@ and model selection are explicit, credentials are resolved through the
153
158
  credential layer, and the optional fallback setting is diagnostic advice rather
154
159
  than an automatic provider switch.
155
160
 
156
- ## v1.47 Frontier Priorities
161
+ ## v1.48 Frontier Priorities
157
162
 
158
- The `1.46.0` frontier set is implemented in `1.47.0`. A second free/open-source
159
- scan after the version bump also closed AG-UI frontend interoperability,
160
- cross-client `.agents/skills/` discovery, and the latest OpenTelemetry
161
- `invoke_workflow`/streaming-chunk latency gap. The remaining ordered backlog keeps
162
- prerelease protocols opt-in and focuses on evidence and trust:
163
+ The `1.48.0` work closes the managed-worker, steering, learned-playbook,
164
+ cited-memory, Agentic CI, trajectory-grading, desktop-QA, durable-side-chat,
165
+ multi-repository, and model-judge gaps from the 2026-07-26 scan. The remaining
166
+ ordered backlog keeps prerelease protocols opt-in and focuses on evidence and
167
+ trust:
163
168
 
164
169
  1. Adopt final MCP 2026 and stable A2A v1 SDK artifacts when published, while
165
170
  preserving dual-stack negotiation and independent-client fixtures.
166
171
  2. Add A2A signed-card verification, streaming/resubscription, and push only
167
172
  with authenticated end-to-end conformance tests.
168
- 3. Extend task-memory provenance, deletion proofs, quarantine, and rollback to
169
- every team, semantic, embedding-backed, and legacy memory store.
170
- 4. Turn trajectory graders for tool choice, handoffs, policy compliance,
171
- recovery, and outcome quality into versioned CI regression gates.
173
+ 3. Extend task-memory citations, deletion proofs, quarantine, and rollback to
174
+ every semantic, embedding-backed, and legacy memory store.
175
+ 4. Publish opt-in, signed, versioned trajectory/outcome pass-rate snapshots and
176
+ calibrate model-judge agreement without capturing prompt/tool content.
172
177
  5. Require registry attestations, dependency review, revocation, and update
173
178
  transparency before one-command community skill/plugin installation.
174
- 6. Enforce claim-to-source links for final web/MCP answers and complete Windows
175
- OS-sandbox parity.
179
+ 6. Reopen authenticated user citations, explicitly refresh web/MCP citations,
180
+ enforce final claim-to-source links, and complete Windows OS-sandbox parity.
176
181
 
177
182
  ## Source And Trust Policy
178
183
 
@@ -437,7 +437,10 @@ ur context-pack remember --decision "Use package scripts before ad hoc commands"
437
437
  ur context-pack remember --constraint "Do not expose secret values"
438
438
  ur context-pack remember --command "bun run typecheck"
439
439
  ur context-pack remember --diff "Safety policy wired into Bash permission checks"
440
+ ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
440
441
  ur context-pack memory verify
442
+ ur context-pack memory revalidate
443
+ ur context-pack memory search --query "streaming"
441
444
  ur context-pack memory quarantine
442
445
  ur context-pack memory rollback --to <entry-id>
443
446
  ur context-pack compress
@@ -451,8 +454,10 @@ Generated files:
451
454
  other manifests.
452
455
  - `.ur/context/architecture.md` — human-readable architecture summary.
453
456
  - `.ur/context/task-memory.jsonl` — private, append-only decisions,
454
- constraints, commands, diffs, and notes with explicit provenance, UUIDs, and
455
- a SHA-256 content/hash chain. Legacy entries are anchored when the chain
457
+ constraints, commands, diffs, and notes with explicit provenance, optional
458
+ file/run/user/web citations, UUIDs, and a SHA-256 content/hash chain. File
459
+ and run citations are digest-revalidated; stale and superseded entries are
460
+ excluded from normal resolution. Legacy entries are anchored when the chain
456
461
  starts rather than silently rewritten.
457
462
  - `.ur/context/compressed.md` — compressed task context summary.
458
463
 
@@ -0,0 +1,210 @@
1
+ # Frontier Agent Workflows
2
+
3
+ UR 1.48 adds ten production-oriented agent capabilities. They are designed
4
+ around explicit trust boundaries: no command in this document silently
5
+ publishes, deploys, pushes, opens a pull request, or bypasses permissions.
6
+
7
+ ## Managed cloud workers and steering
8
+
9
+ Run verified best-of-N worktrees locally, or launch multiple isolated
10
+ candidates in a managed UR environment:
11
+
12
+ ```sh
13
+ ur cloud environments
14
+ ur cloud run "fix the parser race" --runner managed --environment <id> --attempts 3
15
+ ur cloud sync
16
+ ur cloud show <task-id>
17
+ ur cloud logs <task-id> --tail 200
18
+ ur cloud steer <task-id> --message "preserve the public API" --request-id review-1
19
+ ur cloud cancel <task-id>
20
+ ```
21
+
22
+ Managed session IDs, cursors, branches, bounded output, and idempotent steering
23
+ receipts survive CLI restarts in the private cloud-task manifest. Managed mode
24
+ does not claim comparative quality judging: after every candidate terminates,
25
+ UR deterministically ranks candidates that returned PASS with a safe, nonempty
26
+ review branch and reports the first eligible branch as the selection. UR never
27
+ fetches or merges it automatically. Cancellation remains terminal when a
28
+ remote session finishes starting concurrently. Local background agents
29
+ support the same bounded steering pattern:
30
+
31
+ ```sh
32
+ ur bg steer <task-id> --message "also cover the timeout case" --request-id timeout-1
33
+ ```
34
+
35
+ Authenticated A2A compatibility tasks expose owner-isolated mobile steering at
36
+ `POST /a2a/tasks/<id>/messages` (or `/steer`) with:
37
+
38
+ ```json
39
+ {"message":"run the focused regression test","requestId":"mobile-1"}
40
+ ```
41
+
42
+ The task must belong to the authenticated caller and be backed by a running
43
+ background agent. Messages are size-bounded, terminal tasks reject new input,
44
+ and repeated request IDs are deduplicated.
45
+
46
+ ## Evidence-backed learned playbooks
47
+
48
+ UR can mine repeated, verified run trajectories into candidates:
49
+
50
+ ```sh
51
+ ur learn playbooks mine --min-runs 3
52
+ ur learn playbooks list --status candidate
53
+ ur learn playbooks show <id>
54
+ ur learn playbooks approve <id> --name parser-repair
55
+ ur learn playbooks run <id> --max-concurrency 2
56
+ ur learn playbooks reject <id> --reason "insufficient coverage"
57
+ ur learn playbooks disable <id>
58
+ ```
59
+
60
+ Candidates require successful command evidence and a confidence floor. Unsafe,
61
+ secret-like, publishing, deployment, or destructive trajectories are excluded.
62
+ Promotion is always explicit. Approval materializes a normal validated workflow;
63
+ rejected candidates cannot later be approved. Disabling verifies that the
64
+ promoted workflow is unchanged, moves it to a private
65
+ `.ur/learning/disabled/*.yaml.disabled` archive, and prevents future runs.
66
+
67
+ ## Citation-validated shared memory
68
+
69
+ Task memory can cite project files, run artifacts, user messages, and web
70
+ sources:
71
+
72
+ ```sh
73
+ ur context-pack remember --decision "Keep the parser streaming" \
74
+ --cite-file src/parser.ts --lines 20:48
75
+ ur context-pack remember --note "Regression passed" \
76
+ --cite-run <run-id>:manifest.json
77
+ ur context-pack remember --constraint "Keep the public API" \
78
+ --cite-user <session-id>:<message-id>
79
+ ur context-pack remember --note "Protocol requirement" \
80
+ --cite-web https://example.com/spec
81
+ ur context-pack memory revalidate
82
+ ur context-pack memory search --query "parser streaming"
83
+ ```
84
+
85
+ File excerpts and run artifacts carry captured SHA-256 digests. Resolution
86
+ excludes rejected, superseded, missing, and stale entries by default and emits
87
+ bounded source labels suitable for prompts. User and web citations remain
88
+ explicitly unverifiable until their source is reopened; UR does not make a
89
+ network request merely because memory was searched.
90
+
91
+ ## Agentic CI and trajectory gates
92
+
93
+ Create a policy and a pinned, read-only GitHub workflow:
94
+
95
+ ```sh
96
+ ur agent-ci init default
97
+ ur agent-ci validate default
98
+ ur agent-ci workflow default --force
99
+ ur agent-ci run default --event "$GITHUB_EVENT_PATH" \
100
+ --event-name "$GITHUB_EVENT_NAME" --output-dir "$RUNNER_TEMP/ur-agentic-ci"
101
+ ```
102
+
103
+ The agent job checks out a trusted base without persisted credentials, accepts
104
+ issue comments only from configured repository associations, consumes event
105
+ JSON from a file rather than shell source, scrubs code-subprocess secrets, and
106
+ runs in a detached worktree. It emits a bounded, hash-addressed patch, redacted
107
+ check tails, and a manifest. Path policy uses exact NUL-delimited Git records,
108
+ so control characters cannot alter parsing and rename sources remain visible
109
+ as removals. UR hashes staged, unstaged, tracked/untracked, and index-visibility
110
+ state before and after checks. Any mutation blocks and suppresses the patch;
111
+ otherwise the post-check patch is bound to `verificationStateSha256`.
112
+ Publishing belongs in a separate trusted job or a human review step.
113
+
114
+ Eval cases may declare structured trajectory rules in `expect.trajectory`,
115
+ including required, forbidden, ordered, and successfully completed tools;
116
+ tool-call, failure, repetition, permission-denial, and turn limits. Captured
117
+ events retain control-flow metadata only—never prompts, paths, tool input,
118
+ tool output, or assistant text.
119
+
120
+ ```sh
121
+ ur eval run starter
122
+ ur eval gate starter --min-pass-rate 1 --min-trajectory-score 0.9
123
+ ```
124
+
125
+ Eval cases use detached worktrees by default. `--no-isolate` is an explicit
126
+ opt-out. A requested gate fails closed when its metric is unavailable.
127
+
128
+ ## Desktop application QA
129
+
130
+ Desktop QA drives Electron applications through bounded declarative fixtures:
131
+
132
+ ```sh
133
+ ur desktop-qa init
134
+ ur desktop-qa validate .ur/desktop-qa/fixtures/smoke.json
135
+ ur desktop-qa doctor
136
+ ur desktop-qa run .ur/desktop-qa/fixtures/smoke.json
137
+ ```
138
+
139
+ Fixtures support click, fill, key press, select, checkbox, wait, text/visibility
140
+ assertions, and screenshots. Every run closes the application, redacts
141
+ secret-like diagnostics, and records bounded evidence with hashes and a JSON
142
+ report. Selector redaction is applied to screenshots as an opaque mask. Because
143
+ raw video and trace data cannot guarantee that mask, fixtures with
144
+ `redactSelectors` must disable both `recording.video` and `recording.trace` or
145
+ validation fails closed. A failed assertion exits non-zero, making the command
146
+ suitable for CI. Attachment persistence copies only bounded regular
147
+ non-symlink files. The loopback viewer serves a small image/video allow-list
148
+ inline; every other type becomes an octet-stream download with private/no-store
149
+ and sandbox headers.
150
+
151
+ ## Durable side chats
152
+
153
+ `/btw` now keeps private, hash-chained side-chat history outside the repository:
154
+
155
+ ```text
156
+ /btw Why does this parser use a sentinel?
157
+ /btw continue <chat-id> What invariant does it protect?
158
+ /btw list
159
+ /btw show <chat-id>
160
+ /btw rename <chat-id> Parser notes
161
+ /btw close <chat-id>
162
+ ```
163
+
164
+ Each invocation is still a one-turn, tool-free fork, so the main task continues
165
+ independently. History, individual turns, chat count, and storage size are
166
+ bounded; cancellation reaches the forked request.
167
+
168
+ ## Multi-repository coordination
169
+
170
+ Define repositories and a dependency DAG, then run one writer per repository
171
+ in isolated worktrees:
172
+
173
+ ```sh
174
+ ur workspace init checkout
175
+ ur workspace add checkout api ../api --base main --verify "bun test"
176
+ ur workspace add checkout web ../web --base main --verify "bun test"
177
+ ur workspace task checkout api-contract --repo api \
178
+ --prompt "add the checkout response field"
179
+ ur workspace task checkout web-client --repo web \
180
+ --prompt "consume the checkout response field" --depends-on api-contract
181
+ ur workspace validate checkout
182
+ ur workspace run checkout --max-concurrency 4
183
+ ur workspace verify checkout
184
+ ur workspace pr-plan checkout
185
+ ur workspace rollback-plan checkout
186
+ ```
187
+
188
+ Enrollment pins each canonical repository root and a hash of its remote
189
+ identity. The durable run state refuses resume after the specification changes.
190
+ Tasks with dependencies wait; tasks targeting the same repository serialize.
191
+ PR and rollback commands are plans only. Every repository retains its own base
192
+ branch, while cross-repository dependencies determine review order.
193
+
194
+ ## Verified model-judged best-of-N
195
+
196
+ Arena candidates are eligible only after a proof-backed `PASS`, a non-empty
197
+ bounded diff, safety review, and all configured verification commands:
198
+
199
+ ```sh
200
+ ur arena "repair the cache race" --agents 3 \
201
+ --judge hybrid --judge-model <model> \
202
+ --verify "bun run typecheck" --verify "bun test"
203
+ ```
204
+
205
+ `deterministic`, `model`, and `hybrid` modes are supported. The model judge sees
206
+ bounded, secret-redacted, anonymous candidate material and must return a strict
207
+ schema referring only to eligible candidate IDs. A candidate whose full
208
+ redacted diff exceeds the judge bound is excluded rather than partially judged.
209
+ Invalid judge output yields no winner. `--apply` additionally requires the
210
+ original clean worktree and exact base commit to remain unchanged.
package/docs/USAGE.md CHANGED
@@ -221,16 +221,22 @@ ur context-pack remember --preference "Use bun test over jest"
221
221
  ur context-pack remember --accepted "Use p-map for bounded concurrency" --scope project
222
222
  ur context-pack remember --rejected "Switch to esbuild" --alternative-to "Keep bun bundle"
223
223
  ur context-pack remember --attempt "Tried Deno runtime" --status superseded
224
+ ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
224
225
  ur context-pack memory verify
226
+ ur context-pack memory revalidate
227
+ ur context-pack memory search --query "streaming"
225
228
  ur context-pack memory quarantine
226
229
  ur context-pack memory rollback --to <entry-id>
227
230
  ur context-pack compress
228
231
  ```
229
232
 
230
- New entries carry explicit source provenance and form a SHA-256 hash chain.
231
- Reads fail closed on malformed or tampered state. `quarantine` preserves the
232
- complete original privately and restores the verified prefix; `rollback`
233
- preserves a backup before truncating to the requested entry.
233
+ New entries carry explicit source provenance, optional file/run/user/web
234
+ citations, and form a SHA-256 hash chain. File and run citations are rechecked
235
+ against captured content digests; stale and superseded memory is excluded from
236
+ normal resolution. Reads fail closed on malformed or tampered state.
237
+ `quarantine` preserves the complete original privately and restores the
238
+ verified prefix; `rollback` preserves a backup before truncating to the
239
+ requested entry.
234
240
 
235
241
  ## Lifecycle hooks
236
242
 
@@ -273,7 +279,16 @@ UR includes slash commands and CLI subcommands for common workflows:
273
279
  - `ur agents` to list configured agents
274
280
  - `ur agent-trends` to inspect coverage for current agent technology trends
275
281
  - `ur a2a card` to print UR's Agent Card metadata for A2A discovery
276
- - `ur bg ...` to run detached local background agents with optional worktrees and PRs
282
+ - `ur bg ...` to run and idempotently steer detached local background agents
283
+ with optional worktrees and PRs
284
+ - `ur cloud ...` to run, synchronize, steer, and cancel local or managed
285
+ best-of-N workers; managed selection requires explicit `PASS` plus a safe
286
+ review branch and never fetches or merges it
287
+ - `ur agent-ci ...` to generate and run a policy-gated isolated CI agent that
288
+ emits only a post-check, state-bound patch and manifest
289
+ - `ur workspace ...` to coordinate dependency-aware changes across repositories
290
+ - `ur learn playbooks ...` to mine and explicitly approve reusable workflows
291
+ - `/btw ...` to create or continue private durable tool-free side chats
277
292
  - `ur repo-edit ...` to index the repo, plan AST-aware renames, preview patches, and apply with rollback
278
293
  - `ur safety ...` to inspect project shell safety policy and preview command risk
279
294
  - `ur context-pack ...` to summarize architecture and persist project memory (decisions, constraints, commands, diffs, architecture, preferences, attempts, accepted, rejected)
@@ -284,18 +299,24 @@ UR includes slash commands and CLI subcommands for common workflows:
284
299
  - `ur memory retention ...` to prune project-local memory by TTL, max entries, and decay
285
300
  - `ur spec ...` to scaffold requirements, design, and tasks, run a spec task list, and verify with strict proof gates
286
301
  - `ur escalate ...` to plan, run, or ask an oracle model for hard tasks
287
- - `ur arena ...` to run multiple agents on the same task and select a winner
302
+ - `ur arena ...` to verify multiple isolated candidates and select a winner
303
+ with deterministic, model, or hybrid judging; oversized full diffs are
304
+ excluded from model judging
288
305
  - `ur test-first ...` to detect compile/test/lint commands, store failure traces, and install after-edit gates
289
306
  - `ur ci-loop ...` to run tests in an explicit working directory, repair real
290
307
  failures, and rerun with a bounded loop. A "No tests found" result stops
291
308
  after one attempt and reports how to correct `--cwd`.
292
- - `ur artifacts ...` to capture reviewable diffs, test runs, notes, and feedback
309
+ - `ur artifacts ...` to capture reviewable diffs, test runs, notes, feedback,
310
+ and bounded non-symlink attachments with safe download headers/MIME fallback
293
311
  - `ur ide diff ...` to capture editor-readable inline diff bundles
294
312
  - `ur acp stdio` for the official-SDK ACP v1 editor transport with durable
295
313
  list/load/delete/resume, modes, config options, and commands; and
296
314
  `ur acp serve|stop|status` for the separate UR HTTP JSON-RPC API
297
315
  - `ur exec ...` to run prompts in non-interactive mode with optional concurrency
298
- - `ur eval run ...` to run a suite, grade results, and capture execution metrics
316
+ - `ur eval run ...` to run isolated cases, grade redacted tool trajectories,
317
+ and capture execution metrics
318
+ - `ur eval gate ...` to enforce pass, trajectory, test, cost, duration, and
319
+ regression thresholds
299
320
  - `ur eval report ...` to show a saved report or write a single-suite dashboard
300
321
  - `ur eval dashboard` to generate the local HTML dashboard across all reports
301
322
  - `ur eval bench ...` to import local SWE-bench, Terminal-Bench, or Aider Polyglot exports
@@ -314,6 +335,8 @@ UR includes slash commands and CLI subcommands for common workflows:
314
335
  - `ur model-doctor` and `ur model-route ...` to inspect local Ollama models and pick one by capability fit
315
336
  - `ur local-first` to report readiness for offline/no-cloud environments
316
337
  - `ur browser-qa ...` to validate and smoke-run browser QA replay fixtures
338
+ - `ur desktop-qa ...` to run Electron fixtures with hashed masked screenshots;
339
+ raw video/trace requires selector redaction to be disabled
317
340
  - `ur trigger ...` to parse GitHub/Slack webhook payloads and optionally launch a headless run
318
341
  - `ur agent-templates ...`, `ur agent-task ...`, `ur agent-inspect`, `ur agent-features`, and `ur agent-trends` for agent template, PR handoff, timeline, and coverage utilities
319
342
  - `ur role-mode ...` to install built-in Architect, Code, Debug, and Ask role modes
@@ -330,6 +353,10 @@ Source checkouts print
330
353
  `Development build detected. To update, pull latest source or install from npm.`
331
354
  instead of attempting to mutate the checkout.
332
355
 
356
+ See [Frontier Agent Workflows](FRONTIER_AGENT_FEATURES.md) for the complete
357
+ managed-worker, steering, learned-playbook, cited-memory, Agentic CI,
358
+ trajectory, desktop-QA, side-chat, multi-repository, and arena trust model.
359
+
333
360
  ## Status bar
334
361
 
335
362
  Interactive sessions include a compact bottom status bar when stdout is a real
@@ -368,7 +395,9 @@ ur spec init demo --goal "1. add a utils.add function 2. add a test"
368
395
  ur spec run demo --all --dry-run
369
396
  ur spec run demo --all --kernel
370
397
  ur spec verify demo --kernel
371
- ur arena "implement a debounce helper" --agents 2 --dry-run
398
+ ur arena "implement a debounce helper" --agents 3 --judge hybrid --verify "bun test"
399
+ ur agent-ci init default
400
+ ur cloud run "fix the parser race" --runner managed --attempts 3
372
401
  ur escalate run "refactor the cache layer" --force-oracle --dry-run
373
402
  ur test-first detect
374
403
  ur test-first --dry-run
@@ -383,7 +412,9 @@ ur safety check --command "rm -rf build"
383
412
  ur context-pack scan
384
413
  ur context-pack remember --constraint "Run command evidence before claiming success"
385
414
  ur context-pack remember --accepted "Use p-map for concurrency" --scope project
415
+ ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts --lines 20:48
386
416
  ur context-pack memory verify
417
+ ur context-pack memory revalidate
387
418
  ur context-pack compress
388
419
  UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
389
420
  ur acp serve --port 8123
@@ -391,6 +422,9 @@ ur exec "add tests for the parser" --concurrency 4 --json
391
422
  ur ci-loop --command "bun test" --cwd . --dry-run
392
423
  ur artifacts capture-diff
393
424
  ur bg run "fix the flaky parser test" --worktree --dry-run
425
+ ur learn playbooks mine --min-runs 3
426
+ ur workspace init checkout
427
+ ur desktop-qa validate .ur/desktop-qa/fixtures/smoke.json
394
428
  ur worktree list
395
429
  ur worktree clean --dry-run
396
430
  ur repo-edit index
@@ -401,6 +435,7 @@ ur ide diff capture --title "Working tree review"
401
435
  ur eval bench list
402
436
  ur eval run starter --dry-run --json
403
437
  ur eval run starter --metrics --json
438
+ ur eval gate starter --min-pass-rate 1 --min-trajectory-score 0.9
404
439
  ur eval report starter --dashboard
405
440
  ur eval dashboard
406
441
  ur crew create parser-crew --goal "fix the flaky parser test" --decompose --dry-run
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.47.1 (UR-Nexus)"
22
+ # expected for this release: "1.48.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)
@@ -179,6 +179,67 @@ bun run release:check
179
179
  bun run package:check
180
180
  ```
181
181
 
182
+ ## 0.7 Frontier agent workflow gates
183
+
184
+ These deterministic suites use temporary repositories, fake managed-cloud
185
+ clients, injected runners, and mock desktop drivers. They make no paid model
186
+ calls:
187
+
188
+ ```sh
189
+ bun test test/cloudDesktopQa.test.ts
190
+ bun test test/learnedPlaybooks.test.ts test/memoryCitations.test.ts
191
+ bun test test/agenticCi.test.ts test/trajectoryCapture.test.ts
192
+ bun test test/sideChats.test.ts test/workspaceCoordinator.test.ts
193
+ bun test test/arenaModelJudge.test.ts
194
+ ```
195
+
196
+ Expected coverage:
197
+
198
+ - Managed cloud fan-out selects only completed candidates with explicit
199
+ `PASS` and safe non-empty review branches. Ordering is deterministic and
200
+ never fetches or merges a branch. Cancellation remains terminal even when a
201
+ remote session finishes starting concurrently.
202
+ - Cloud, local-background, and owner-scoped A2A steering reject terminal or
203
+ foreign tasks, bound message/receipt storage, and deduplicate request IDs
204
+ before delivery.
205
+ - Learned playbooks require proof-backed safe evidence and explicit approval.
206
+ Rejection is terminal; disable verifies the promoted workflow, moves it to
207
+ the private disabled archive, and prevents execution.
208
+ - Cited memory revalidates file excerpts and run artifacts by digest, excludes
209
+ stale/missing entries by default, and leaves user/web sources explicitly
210
+ unverifiable without reopening them.
211
+ - Agentic CI treats event text as data, uses a read-only pinned workflow,
212
+ isolates credentials, checks deletion/rename-source and path policy using
213
+ exact NUL-delimited Git metadata, and emits only a bounded hash-addressed
214
+ patch plus its manifest. A passing verification command that changes staged,
215
+ unstaged, untracked, or index-visible state must block and emit no patch.
216
+ - Trajectory capture retains control-flow metadata only. Requested trajectory
217
+ or report metrics fail closed when absent or below the configured gate.
218
+ - Desktop QA tears down on every path, masks configured screenshot selectors,
219
+ and refuses raw video or trace recording whenever selector redaction is
220
+ configured. Artifact evidence rejects symlink sources and normalizes unsafe
221
+ MIME declarations to a safe type; downloads use a bounded store path,
222
+ no-store/sandbox headers, a small safe inline allow-list, and octet-stream
223
+ fallback.
224
+ - Side chats survive reload, validate their hash chain, stay tool-free and
225
+ bounded, and reject continuation after close.
226
+ - Workspace coordination validates remote identity and the dependency DAG,
227
+ permits independent repositories to run concurrently, serializes one writer
228
+ per repository, refuses changed-spec resume, and produces PR/rollback plans
229
+ without executing them.
230
+ - Arena model/hybrid judging sees only bounded, redacted, anonymous eligible
231
+ candidates; an oversized full diff is excluded rather than partially judged,
232
+ invalid decisions yield no winner, and apply requires the original clean
233
+ base.
234
+
235
+ Check the public documentation surfaces after any contract change:
236
+
237
+ ```sh
238
+ bun test test/docsCommands.test.ts test/docsCoverage.test.ts
239
+ node --check documentation/app.js
240
+ bun run lint
241
+ ```
242
+
182
243
  ## 1. Marketplace tree resolves
183
244
 
184
245
  In a fresh interactive session: