ace-overseer 0.16.0 → 0.17.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/handbook/workflow-instructions/overseer.wf.md +72 -20
- data/lib/ace/overseer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 860e9ff0d0d664c563c1fa9139d5f0d18b2e4c869239424e881dd2a018ad12bc
|
|
4
|
+
data.tar.gz: 55c0694f24f3a4d8ea9492df5f552e42fb2171cc75bd848988b642171f1b1e3c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6bb2d12eb03983cc5b10f9b71f72fea46c25c39e6394e02060a9e505767400d2a57a1da1794140235a9e1b6f0f01fa01f89287755b5d7af6490497312e1375ed
|
|
7
|
+
data.tar.gz: 830f8f444002616d28121d391b95d85cc50a07c18b6bf0f63a4e7186d332cb7a118d7b3ef059e7d11d24e7e37f37a2305eeb15bcda5a63ecc2fc42469dd5f204
|
data/CHANGELOG.md
CHANGED
|
@@ -7,11 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.17.0] - 2026-09-29
|
|
11
|
+
|
|
10
12
|
### Added
|
|
11
13
|
- Added an explicit Lab runtime adapter for listing projects and agents, preparing and dispatching Works, forwarding prompts over stdin, starting exact-head reviews, and stopping workers.
|
|
14
|
+
- Added installed-consumer probe coverage: the suite builds the current gem artifacts, installs them into an isolated consumer environment (fresh gem home, unrelated cwd, sanitized HOME), and proves `ace-nav resolve wfi://overseer` and `ace-bundle wfi://overseer` succeed from packaged content only, with a registration-removal fixture proving the probe detects masking.
|
|
12
15
|
|
|
13
16
|
### Changed
|
|
14
17
|
- Kept tmux as the default runtime while allowing `work-on`, `status`, and dry-run `prune` to delegate through the system-owned `/usr/local/bin/lab` boundary.
|
|
18
|
+
- Strengthened the overseer prune-safety contract: migrated-work preservation now requires a declared, verified destination plus tree/artifact or patch equivalence (the subject-only successor search is gone), plus a positive executed no-active-writer check from overseer/assignment/Lab status; ambiguity preserves.
|
|
15
19
|
|
|
16
20
|
|
|
17
21
|
## [0.16.0] - 2026-09-20
|
|
@@ -6,8 +6,8 @@ doc-type: workflow
|
|
|
6
6
|
title: Overseer Workflow
|
|
7
7
|
purpose: Binding process contract for the overseer lifecycle (work-on, status, prune) with executed-check contracts for prune safety and status truth.
|
|
8
8
|
ace-docs:
|
|
9
|
-
last-updated: '2026-09-
|
|
10
|
-
last-checked: '2026-09-
|
|
9
|
+
last-updated: '2026-09-28'
|
|
10
|
+
last-checked: '2026-09-28'
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Overseer Workflow
|
|
@@ -84,7 +84,8 @@ ace-overseer prune --yes
|
|
|
84
84
|
#### Prune safety (non-negotiable executed check)
|
|
85
85
|
|
|
86
86
|
Prune/removal of a worktree or branch happens **only after an executed
|
|
87
|
-
preservation proof
|
|
87
|
+
preservation proof plus an executed no-active-writer check** for every
|
|
88
|
+
candidate:
|
|
88
89
|
|
|
89
90
|
1. Prove the work is already merged into its base:
|
|
90
91
|
|
|
@@ -92,35 +93,86 @@ preservation proof** for every commit that would be removed:
|
|
|
92
93
|
git merge-base --is-ancestor <work-head> <base>
|
|
93
94
|
```
|
|
94
95
|
|
|
95
|
-
Exit code 0 proves every commit on the work branch is contained in the
|
|
96
|
+
Exit code 0 proves every commit on the work branch is contained in the
|
|
97
|
+
base.
|
|
96
98
|
|
|
97
|
-
2. If the work was migrated elsewhere (squash-merge, cherry-pick,
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
2. If the work was migrated elsewhere (squash-merge, cherry-pick,
|
|
100
|
+
hand-off), preservation requires a **declared, verified destination**
|
|
101
|
+
plus content equivalence. A matching commit subject is never sufficient
|
|
102
|
+
proof:
|
|
103
|
+
|
|
104
|
+
1. Declare the destination concretely: successor repository plus
|
|
105
|
+
branch/PR/commit that received the work.
|
|
106
|
+
2. Verify the destination actually accepted the work, executed in this
|
|
107
|
+
session:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git -C <successor-repo> merge-base --is-ancestor <dest-ref> <dest-branch>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
rc=0 proves the destination landed on the declared branch (or read
|
|
114
|
+
the merged/accepted state from the forge hosting the PR).
|
|
115
|
+
|
|
116
|
+
3. Prove the destination carries the same work by content, not by
|
|
117
|
+
name. Pass with exactly one of:
|
|
118
|
+
|
|
119
|
+
- Tree/artifact equivalence -- the squashed result is the same
|
|
120
|
+
content:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
test "$(git -C <successor-repo> rev-parse '<dest-ref>^{tree}')" \
|
|
124
|
+
= "$(git rev-parse '<work-head>^{tree}')"
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
- Patch equivalence -- the same changes, compared inside the
|
|
128
|
+
successor repository. Fetch the source proof refs first and
|
|
129
|
+
range-diff with separate source and destination bases:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
git -C <successor-repo> fetch <source-repo> <source-base> <work-head>
|
|
133
|
+
git -C <successor-repo> range-diff \
|
|
134
|
+
<source-base>...<work-head> <dest-base>...<dest-ref>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
with no substantive differences; or diff the normalized patches
|
|
138
|
+
(`git show --format=` output of each side) and require an empty
|
|
139
|
+
diff.
|
|
140
|
+
|
|
141
|
+
4. Ambiguity preserves: conflicting hashes, an unverifiable destination,
|
|
142
|
+
or a failed equivalence check means no proof -- block the prune per
|
|
143
|
+
step 5.
|
|
144
|
+
|
|
145
|
+
3. Prove no active writer before destruction, executed in this session
|
|
146
|
+
against the authoritative lifecycle state:
|
|
100
147
|
|
|
101
148
|
```bash
|
|
102
|
-
|
|
149
|
+
ace-overseer status --format json
|
|
103
150
|
```
|
|
104
151
|
|
|
105
|
-
|
|
106
|
-
|
|
152
|
+
For assignment-backed candidates also check `ace-assign status`; for Lab
|
|
153
|
+
runtime candidates check `ace-overseer status --runtime lab`. A running
|
|
154
|
+
assignment, an in-flight Lab work, or any unaccounted writer blocks the
|
|
155
|
+
prune. Missing or unreadable lifecycle state counts as an active writer
|
|
156
|
+
-- preserve.
|
|
107
157
|
|
|
108
|
-
|
|
109
|
-
observe the
|
|
158
|
+
4. A described or remembered proof is never sufficient -- run the commands
|
|
159
|
+
and observe the results in this session.
|
|
110
160
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
161
|
+
5. Any commit without a proven copy, any failed or ambiguous equivalence,
|
|
162
|
+
or any active-writer evidence **blocks the prune** for that worktree.
|
|
163
|
+
Report the blocked candidate (ref, head SHA, missing proof) to the
|
|
164
|
+
operator; never silently drop it and never force past a failed proof.
|
|
165
|
+
Preserve on ambiguity.
|
|
114
166
|
|
|
115
167
|
## Non-Negotiable Contracts Summary
|
|
116
168
|
|
|
117
|
-
| Contract | Claim
|
|
118
|
-
|
|
119
|
-
| Prune safety | "The work is preserved"
|
|
120
|
-
| Status truth | "The task is blocked on the owner" | An executable non-secret check run in this session; stale tasks closed/corrected in the same change
|
|
169
|
+
| Contract | Claim | Executed proof |
|
|
170
|
+
|--------------|-------|----------------|
|
|
171
|
+
| Prune safety | "The work is preserved and nothing is actively writing" | `git merge-base --is-ancestor <work-head> <base>` (rc=0), or verified destination + tree/artifact or patch equivalence; plus `ace-overseer status --format json` (assignment/Lab status where applicable) showing no active writer |
|
|
172
|
+
| Status truth | "The task is blocked on the owner" | An executable non-secret check run in this session; stale tasks closed/corrected in the same change |
|
|
121
173
|
|
|
122
174
|
## Success Criteria
|
|
123
175
|
|
|
124
176
|
- Work starts only through `ace-overseer work-on` (or the Lab-runtime equivalent), never through ad-hoc manual worktree provisioning.
|
|
125
177
|
- Every status review re-verified pending owner-blocked tasks with an executed check and corrected stale state in the same change.
|
|
126
|
-
- Every pruned worktree/branch had an executed preservation proof; candidates without proof were reported as blocked, not removed.
|
|
178
|
+
- Every pruned worktree/branch had an executed preservation proof (ancestor containment, or a verified destination with tree/artifact or patch equivalence) and an executed no-active-writer check; candidates without complete proof were reported as blocked, not removed.
|
data/lib/ace/overseer/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ace-overseer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.17.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michal Czyz
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-09-
|
|
10
|
+
date: 2026-09-29 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ace-support-cli
|