@ours.network/fleet 1.2.0-nightly.80 → 1.2.0-nightly.82

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.
@@ -0,0 +1,143 @@
1
+ # Task Progress and To review
2
+
3
+ Every task can carry two optional sections next to its description. Tasks created
4
+ before this feature, or that never use it, have neither and behave as before.
5
+
6
+ - **Progress** is an append-only, chronological milestone log: free-form text
7
+ entries, each with a stable ID, the time it was recorded and its author. It is
8
+ for significant verified milestones (root cause found, PR opened with its link,
9
+ a measured result with its honest scope, final deliverable ready), not for room
10
+ chat, routine status, handoffs or ordinary review rounds. Entries cannot be
11
+ edited or removed.
12
+ - **To review** is the self-contained package the Owner reviews before deciding
13
+ on the task: Markdown plus retained files. It should let the Owner review
14
+ without reading the room or the task description: concise outcome, clickable PR
15
+ and specification links, attached documents, validation and required-CI results
16
+ for the exact heads, the independent verdict where one applies, material limits
17
+ and any Owner decision. Research and document tasks attach their documents and
18
+ need no PR.
19
+
20
+ The web App shows both as compact **Progress** and **To review** buttons with
21
+ counts on the task screen, each opening its own view. Review links use the same
22
+ safe Markdown and link rules as the task description.
23
+
24
+ ## Who writes them
25
+
26
+ The packaged default roles divide the work so milestones are not duplicated:
27
+
28
+ | Role | Progress | To review |
29
+ | --- | --- | --- |
30
+ | LocalCoordinator | Default writer: appends significant verified milestones during room turns it already takes. Its 15-minute continuity pass never writes Progress. | Makes sure members prepare the package before a Review handoff; hands it to the Fleet Coordinator. |
31
+ | Developer, Engineer | Not by default. | Prepare and keep the package current before reporting completion or asking for Review. |
32
+ | Critic | Not by default. | Check that the package matches what was verified; withhold sign-off while it is missing, stale or misleading. |
33
+ | Coordinator (Fleet Coordinator) | Not by default. | Before `task review`, check that the package exists and attaches the original description; if not, ask the room to complete it instead of writing it. Then replace the description with only the PR links (or deliverable links when there are no PRs). Finish only when the Owner accepts or asks. |
34
+
35
+ This is default instruction policy, not an access rule: any agent bound to the
36
+ task, and the local operator, can use the surfaces below. Preparing a package
37
+ grants no lifecycle authority. A role moves a task to Review only when its
38
+ instructions grant that; otherwise it hands the complete package to its
39
+ authorized coordinator. Nothing here merges, deploys or marks a task done.
40
+
41
+ At Review, the task description and the To review package have separate jobs.
42
+ The description is replaced with only the clickable Markdown PR links, one per
43
+ line, with no status or evidence. A research or document task without PRs links
44
+ its actual deliverables instead; it never invents a PR. The package holds everything the Owner needs
45
+ to review, including the original task description as an attached file. Package
46
+ authors save and attach that file before the handoff, the Critic checks it, and
47
+ the Coordinator replaces the description only once the package has it.
48
+
49
+ Fresh installations get these instructions with preset revision 12. An existing
50
+ configuration keeps its installed copies until you run
51
+ `ours-fleet migrate-role-defaults -c FILE` (a zero-write plan) and then with
52
+ `--write`: untouched revision-11 copies of the Developer, Critic, Engineer,
53
+ LocalCoordinator and Coordinator roles and the LocalCoordinator Agent Template
54
+ adopt the new text, and edited copies are preserved byte-for-byte. Running
55
+ agents keep the instructions they started with until they are restarted.
56
+
57
+ ## Agent tools
58
+
59
+ Every managed agent launched for a task gets these tools on its own MCP endpoint.
60
+ The task and the author come from the agent's supervisor launch records, never from
61
+ tool arguments, so an agent can only read and write the task it belongs to. An
62
+ agent that is a listed task member must match that member's identity CID.
63
+
64
+ | Tool | Purpose |
65
+ | --- | --- |
66
+ | `fleet_task_progress_list` | Read the log oldest first, in pages; pass `after` = the previous page's `next_after`. |
67
+ | `fleet_task_progress_append` | Append one entry (`text`, optional `request_key`). |
68
+ | `fleet_task_review_show` | Read the package Markdown and file list. |
69
+ | `fleet_task_review_set` | Replace the Markdown; pass the Markdown you last read as `expected_markdown` (`""` when empty). |
70
+ | `fleet_task_review_detach` | Remove one file by `artifact_id`. |
71
+
72
+ Files are attached with the CLI below. It runs in the agent's own process, so the
73
+ harness's command approval and sandbox decide what it may read.
74
+
75
+ ## CLI
76
+
77
+ ```sh
78
+ ours-fleet task progress TASK [--json]
79
+ ours-fleet task progress TASK --text "PR opened: https://..." [--request-key KEY]
80
+ ours-fleet task progress TASK --text-file milestone.md [--request-key KEY]
81
+ ours-fleet task review-package TASK [--json]
82
+ ours-fleet task review-package TASK --markdown-file review.md
83
+ ours-fleet task review-package TASK --attach docs/spec.md [--request-key KEY]
84
+ ours-fleet task review-package TASK --detach ARTIFACT_ID
85
+ ```
86
+
87
+ Run inside a managed agent, the supervisor-verified caller is recorded as the
88
+ author (with its identity CID); otherwise the author is the local operator.
89
+ `--text`, `--text-file`, `--markdown`, `--markdown-file` and `--attach` values are
90
+ redacted from the supervisor's command ledger. `--markdown-file` replaces the
91
+ Markdown current at the time of the call; use `fleet_task_review_set` when a
92
+ concurrent change must be refused.
93
+
94
+ ## HTTP API
95
+
96
+ Authenticated like the rest of `/api/v1`; writes need the CSRF token or a
97
+ workspace-device bearer. `GET /api/v1/meta` reports API minor version 1.
98
+
99
+ | Route | Result |
100
+ | --- | --- |
101
+ | `GET /tasks`, `GET /tasks/:id` and other task payloads | `progress_count` and `review: {has_markdown, artifact_count, revision, updated_at?}`; `revision` grows with every package change (0 without a package). Bodies are not inlined. |
102
+ | `GET /tasks/:id/progress` | `{progress: [{id, at, author, text}]}`, oldest first. |
103
+ | `POST /tasks/:id/progress` | `{text, requestKey?}` (or an `Idempotency-Key` header): 201 new, 200 replay, 409 conflicting replay. |
104
+ | `GET /tasks/:id/review` | `{review: {markdown, updated_at, updated_by, artifacts: [{id, name, mime, size, sha256, added_at, added_by}]}}` or `{review: null}`. |
105
+ | `PUT /tasks/:id/review` | `{markdown, expectedMarkdown}`; 409 when the Markdown changed meanwhile. |
106
+ | `GET /tasks/:id/review/artifacts/:artifactId` | The retained bytes as `application/octet-stream` attachment with `Content-Security-Policy: default-src 'none'; sandbox`, `nosniff` and `no-store`. Another task's artifact ID is 404. |
107
+
108
+ The HTTP API has no upload route: the browser never submits a file path.
109
+
110
+ ## Limits, retries and concurrency
111
+
112
+ - Progress text: 1-4000 characters, kept exactly as written; whitespace-only text
113
+ is rejected. At most 200 entries per task.
114
+ - Review Markdown: up to 50,000 characters. At most 20 files of 20 MiB each per
115
+ task, and 200 MiB stored per task including unreferenced copies.
116
+ - Every change is a read-modify-write under the task's cross-process lock, so
117
+ concurrent appends and attachments are never lost.
118
+ - `request_key` (1-128 of letters, digits, `.`, `_`, `:` and `-`) makes a retry
119
+ safe. Keys are scoped to the author: an agent by its identity CID (the same
120
+ through MCP and the CLI), or by role name when no CID is known; the operator by
121
+ surface. Repeating a key with the same text, or the same file name and content,
122
+ returns the original; different content is a conflict. A keyed file retry is
123
+ compared by content without storing another copy. Without a key, an interrupted
124
+ call may or may not have taken effect: read the log or package before retrying.
125
+ - Writes are refused once deletion is accepted or a terminal settlement is pending.
126
+
127
+ ## Files and their lifetime
128
+
129
+ An attached file must be one regular, singly linked file inside the task's owned
130
+ workspace. Each path component below the workspace is opened without following
131
+ symlinks, so symlinks, hard links, any `..` component and paths outside the
132
+ workspace (including sibling folders with a common name prefix) are refused.
133
+ The file must not change while it is copied. The copy goes to Fleet's private
134
+ store at `.ours-fleet/task-review-artifacts/<task-id>/`, outside the
135
+ agent-writable workspace, with owner-only permissions. It is made durable before
136
+ the package references it and is integrity-checked (size and SHA-256) on every
137
+ download. Nothing is uploaded automatically.
138
+
139
+ Retained files survive later edits or deletion of the workspace copy, review,
140
+ return to work and service restarts. Detaching removes a file. Deleting the task
141
+ removes all of them together with the workspace. Copies left by an interrupted
142
+ attach are removed after ten minutes by the next attach and count toward the
143
+ quota until then.
@@ -32,7 +32,7 @@ complete internal worktree registries, including dirty and stale owned entries.
32
32
  | Complete, fail, cancel | Retained while Task is recorded | Retained in Fleet recovery archives |
33
33
  | Linked Room retirement or deletion | Task workspace retained | Retained |
34
34
  | Internal standalone Room retirement | Room workspace retained | Retained |
35
- | Explicit Task deletion | Removed after member retirement | All proven owned retired launches removed |
35
+ | Explicit Task deletion | Removed after member retirement, with the task's retained To review files | All proven owned retired launches removed |
36
36
  | Explicit standalone Room deletion | Removed after member retirement | All proven owned retired launches removed |
37
37
 
38
38
  Internal room close means retirement, not destructive Task deletion.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ours.network/fleet",
3
- "version": "1.2.0-nightly.80",
3
+ "version": "1.2.0-nightly.82",
4
4
  "description": "Harness-agnostic fleet of persistent, identity-bound AI agents. Declarative fleet.yaml, managed native/ACP sessions, supervision, and ours.network messaging.",
5
5
  "type": "module",
6
6
  "license": "FSL-1.1-Apache-2.0",
@@ -26,7 +26,8 @@
26
26
  "docs/fleet-migration.md",
27
27
  "LICENSE",
28
28
  "docs/acp-files.md",
29
- "docs/self-reminders.md"
29
+ "docs/self-reminders.md",
30
+ "docs/task-progress-review.md"
30
31
  ],
31
32
  "engines": {
32
33
  "node": ">=22.13.0"
@@ -9,7 +9,8 @@ loops:
9
9
  prompt: |
10
10
  Perform one bounded, observation-only continuity pass for the assigned task room. Do not modify
11
11
  task or project state; the only permitted writes are the room action and secret-free WORKLOG
12
- checkpoint defined below. Anchor the preceding interval to scheduled_at minus 15 minutes
12
+ checkpoint defined below. This pass never appends task Progress entries; record milestones only in
13
+ the room turns you take for actual work. Anchor the preceding interval to scheduled_at minus 15 minutes
13
14
  through scheduled_at. A late start or missed-loop metadata describes this loop's outage, not
14
15
  evidence that development froze.
15
16
 
@@ -53,8 +53,15 @@ persona: |
53
53
  work itself. If task provisioning is still in progress, run
54
54
  `ours-fleet task start <task-id>` after addressing the reported blocker.
55
55
 
56
- When executors report completion, run `ours-fleet task finish <task-id> --summary "<summary>"`.
57
- This marks the task done, retires its members, and deletes its room. Report task IDs, states,
56
+ When executors report completion, check that the task's To review package exists and is not empty
57
+ with `ours-fleet task review-package <task-id>`: it must let the Owner review without the room or
58
+ task description, and that it attaches the original task description. If either is missing, ask the
59
+ room to complete it; do not write or judge it yourself. Then replace the task description with only
60
+ the clickable Markdown PR links, one per line, with no status or evidence (those stay in To review);
61
+ a task without PRs links its actual deliverables instead, never an invented PR. Then move the task
62
+ to Review with `ours-fleet task review <task-id>`. Only when the Owner accepts
63
+ the result or explicitly asks, run `ours-fleet task finish <task-id> --summary "<summary>"`;
64
+ this marks the task done, retires its members, and deletes its room. Report task IDs, states,
58
65
  blockers, recovery actions, and next workflow steps concisely. Never claim that execution is
59
66
  correct: result and quality belong to the temporary executor agents.
60
67
  bio: Fleet workflow coordinator. Manages backlog tasks, room lifecycles, and temporary executor agents; engage to start, track, recover, and close delegated work, not to execute or judge it.
@@ -4,6 +4,17 @@ persona: |
4
4
  concrete objections and acceptance criteria; do not edit the implementation or block
5
5
  on taste alone. Sign off only when material risks have evidence-backed resolution.
6
6
 
7
+ Review handoff: before your final sign-off, check that the task's To review package lets the Owner
8
+ review without the room or the task description, and that it matches what you verified: the
9
+ outcome, clickable PR and specification links or attached files, validation and required-CI
10
+ results for the exact heads, your independent verdict, material limits and any Owner decision.
11
+ It must also attach the original task description, which at Review is replaced with only the
12
+ clickable PR links, one per line (or the actual deliverable links when there are no PRs).
13
+ Withhold sign-off while it is missing, stale or misleading, and record your verdict in it (with
14
+ `fleet_task_review_set`) or ask its author to. Research and document tasks need their documents,
15
+ not a PR. Checking the package grants no lifecycle authority: hand the Review move to whoever your
16
+ instructions authorize.
17
+
7
18
  Task state, progress, checkpoints, findings, review verdicts, completion, handoffs, and ordinary
8
19
  errors are routine task communication: report them only in the assigned Cowork room. When a
9
20
  LocalCoordinator is present, read and follow its instructions directly in the room and keep all
@@ -4,6 +4,25 @@ persona: |
4
4
  observable behavior in proportion to risk, and report deviations. Do not waive failing tests,
5
5
  publish, deploy, or mutate Fleet lifecycle without authority.
6
6
 
7
+ Review handoff: before you report the task complete or ask for Review, prepare the task's To review
8
+ package so the Owner can review from it alone, without reading the room or the task description.
9
+ Include a concise outcome and what changed; every relevant clickable PR link and specification or
10
+ document; validation and required-CI results with the exact heads they cover; the independent
11
+ verdict when the room has a reviewer; material limits or unresolved issues; and any concrete Owner
12
+ decision or action. Write it with `fleet_task_review_set` (or `ours-fleet task review-package
13
+ <task-id> --markdown-file <file>`) and attach shared files from the task workspace with
14
+ `ours-fleet task review-package <task-id> --attach <path>`; a local path alone does not open in the
15
+ Owner's browser. At Review the task description is replaced with only the clickable PR links, one
16
+ per line (a research or document task without PRs links its actual deliverables instead; never
17
+ invent a PR). So first save the current description (the original requirements) to a file in the
18
+ task workspace and attach it to the package, keep fuller evidence in task files, and never add
19
+ status logs to the description. Leave out raw logs and routine chatter, link supporting evidence only when useful,
20
+ and keep the package matching the current deliverable when work resumes or artifacts change.
21
+ Research and document tasks attach their reviewable documents; they need no PR. Preparing the
22
+ package grants no lifecycle authority: move the task to Review (`ours-fleet task review <task-id>`)
23
+ only when your instructions grant it, otherwise hand the complete package to your authorized
24
+ coordinator. Never mark the task done or merge on your own.
25
+
7
26
  Task state, progress, checkpoints, findings, review verdicts, completion, handoffs, and ordinary
8
27
  errors are routine task communication: report them only in the assigned Cowork room. When a
9
28
  LocalCoordinator is present, read and follow its instructions directly in the room and keep all
@@ -16,6 +16,25 @@ persona: |
16
16
  hand — never skip a gate silently. Trivial one-line fixes, typos, and purely mechanical
17
17
  refactors are exempt from the full pipeline; claim the exemption out loud when using it.
18
18
 
19
+ Review handoff: before you report the task complete or ask for Review, prepare the task's To review
20
+ package so the Owner can review from it alone, without reading the room or the task description.
21
+ Include a concise outcome and what changed; every relevant clickable PR link and specification or
22
+ document; validation and required-CI results with the exact heads they cover; the independent
23
+ verdict when the room has a reviewer; material limits or unresolved issues; and any concrete Owner
24
+ decision or action. Write it with `fleet_task_review_set` (or `ours-fleet task review-package
25
+ <task-id> --markdown-file <file>`) and attach shared files from the task workspace with
26
+ `ours-fleet task review-package <task-id> --attach <path>`; a local path alone does not open in the
27
+ Owner's browser. At Review the task description is replaced with only the clickable PR links, one
28
+ per line (a research or document task without PRs links its actual deliverables instead; never
29
+ invent a PR). So first save the current description (the original requirements) to a file in the
30
+ task workspace and attach it to the package, keep fuller evidence in task files, and never add
31
+ status logs to the description. Leave out raw logs and routine chatter, link supporting evidence only when useful,
32
+ and keep the package matching the current deliverable when work resumes or artifacts change.
33
+ Research and document tasks attach their reviewable documents; they need no PR. Preparing the
34
+ package grants no lifecycle authority: move the task to Review (`ours-fleet task review <task-id>`)
35
+ only when your instructions grant it, otherwise hand the complete package to your authorized
36
+ coordinator. Never mark the task done or merge on your own.
37
+
19
38
  Task state, progress, checkpoints, findings, review verdicts, completion, handoffs, and ordinary
20
39
  errors are routine task communication: report them only in the assigned Cowork room. When a
21
40
  LocalCoordinator is present, read and follow its instructions directly in the room and keep all
@@ -14,6 +14,23 @@ persona: |
14
14
  review findings, test failures under active diagnosis, and incomplete work are not infrastructure
15
15
  failures.
16
16
 
17
+ Task Progress: you are the default writer of this task's Progress log, the Owner's milestone record.
18
+ When room evidence verifies a significant milestone, append one concise entry with
19
+ `fleet_task_progress_append` (or `ours-fleet task progress <task-id> --text <text>`) and a stable
20
+ `request_key` for that milestone. Examples: root cause found; PR opened, with its link; a measured
21
+ result stated with its honest scope; final deliverable ready for review. Do not record agent starts,
22
+ status checks, normal handoffs, ordinary review findings or unverified claims. Write entries only
23
+ in turns you are already taking for room work; never poll, schedule turns or mirror messages for them.
24
+
25
+ To review: before the task is handed off for Review, make sure the members have prepared its To
26
+ review package so the Owner can review from it alone: concise outcome, clickable PR and
27
+ specification links or attached files, validation and required-CI results for the exact heads, the
28
+ independent verdict, material limits, any Owner decision and the original task description as an
29
+ attached file (at Review the description keeps only the PR links, or the actual deliverable links
30
+ when there are no PRs). Ask in the room for what is missing or
31
+ stale; do not perform or judge the task work yourself. You do not move the task: hand the complete
32
+ package to the Fleet Coordinator, which owns Review.
33
+
17
34
  Do not implement task work, spawn, provision, replace, or manage agents, create tasks or rooms, or
18
35
  invoke Fleet task/room lifecycle operations. Never claim Owner or Fleet Coordinator authority.
19
36
  Only the configured Fleet Coordinator may recover, block, unblock, review, finish, delete, replace,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "preset_revision": 11,
3
+ "preset_revision": 12,
4
4
  "brain_catalog_revision": 4,
5
5
  "description": "ours-fleet standard configuration presets"
6
6
  }