ace-overseer 0.15.6 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f64d7b81728d6636ebc933e6c30f119bc6aba514a8652562f393e5ab7f3a5540
4
- data.tar.gz: abdc381e8d76669ba78bb871280704efd979a62df58aeecc703d912cd99a5275
3
+ metadata.gz: 860e9ff0d0d664c563c1fa9139d5f0d18b2e4c869239424e881dd2a018ad12bc
4
+ data.tar.gz: 55c0694f24f3a4d8ea9492df5f552e42fb2171cc75bd848988b642171f1b1e3c
5
5
  SHA512:
6
- metadata.gz: d079fea537a3941ecb55459d52793bf1a6a5d55e411e05dabc4154561536de0cdda61c4b4a8fb6c4fc10170f19fd255e0b66a1da4d0823d332e62aac8511d9d2
7
- data.tar.gz: a718d278ba5223bc08589f6627b6fb72f92d433703b7ef69c83a4cc8f06182afc79241754a383f743f5c98b690ce77bbe250c3cd04d97b9a8e5c931e86b38146
6
+ metadata.gz: 6bb2d12eb03983cc5b10f9b71f72fea46c25c39e6394e02060a9e505767400d2a57a1da1794140235a9e1b6f0f01fa01f89287755b5d7af6490497312e1375ed
7
+ data.tar.gz: 830f8f444002616d28121d391b95d85cc50a07c18b6bf0f63a4e7186d332cb7a118d7b3ef059e7d11d24e7e37f37a2305eeb15bcda5a63ecc2fc42469dd5f204
@@ -0,0 +1,13 @@
1
+ ---
2
+ # WFI Sources Protocol Configuration for ace-overseer gem
3
+ # This enables workflow discovery from the installed ace-overseer gem
4
+
5
+ name: ace-overseer
6
+ type: gem
7
+ description: Overseer workflow instructions from ace-overseer gem
8
+ priority: 10
9
+
10
+ config:
11
+ relative_path: handbook/workflow-instructions
12
+ pattern: "*.wf.md"
13
+ enabled: true
data/CHANGELOG.md CHANGED
@@ -7,12 +7,22 @@ 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.
19
+
15
20
 
21
+ ## [0.16.0] - 2026-09-20
22
+
23
+ ### Added
24
+ - Shipped the overseer lifecycle workflow so `wfi://overseer` resolves for gem consumers: the gem now registers `.ace-defaults/nav/protocols/wfi-sources/ace-overseer.yml` (ace-hitl pattern) and ships real workflow instructions for `work-on`, `status`, and `prune` in `handbook/workflow-instructions/overseer.wf.md`, with prune-safety and status-truth executed-check contracts as first-class non-negotiable steps.
25
+ - Added a packaging test proving the built gem ships both the workflow-instructions payload and the wfi source registration so a future gemspec glob change cannot silently drop them.
16
26
 
17
27
  ## [0.15.6] - 2026-09-02
18
28
 
@@ -1,16 +1,178 @@
1
1
  ---
2
+ name: overseer-workflow
3
+ description: Orchestrate task worktrees with ace-overseer (work-on, status, prune) under binding prune-safety and status-truth executed-check contracts
4
+ allowed-tools: Bash, Read
2
5
  doc-type: workflow
3
6
  title: Overseer Workflow
4
- purpose: overseer workflow
7
+ purpose: Binding process contract for the overseer lifecycle (work-on, status, prune) with executed-check contracts for prune safety and status truth.
5
8
  ace-docs:
6
- last-updated: 2026-03-12
7
- last-checked: 2026-03-21
9
+ last-updated: '2026-09-28'
10
+ last-checked: '2026-09-28'
8
11
  ---
9
12
 
10
13
  # Overseer Workflow
11
14
 
15
+ ## Goal
16
+
17
+ Orchestrate task worktrees with `ace-overseer` (work-on, status, prune) as the
18
+ binding process contract. Two executed-check contracts in this workflow are
19
+ non-negotiable: **prune safety** and **status truth**. They exist because a
20
+ described or remembered check is how worktrees and commits get silently
21
+ destroyed and stale blockers masquerade as state. Every step below is executed,
22
+ never assumed.
23
+
12
24
  ## Instructions
13
25
 
14
- 1. For work-on flows, run `ace-overseer work-on --task $ARGUMENTS`.
15
- 2. Use `ace-overseer status` to inspect active worktrees.
16
- 3. Use `ace-overseer prune --dry-run` before destructive cleanup, then `ace-overseer prune --yes` when confirmed.
26
+ Run the loaded workflow as the source of truth and execute it end-to-end
27
+ instead of only summarizing it.
28
+
29
+ ### 1) Work-on: start focused task work
30
+
31
+ Provision a worktree, open a tmux window, and prepare the assignment:
32
+
33
+ ```bash
34
+ ace-overseer work-on --task <task-ref>
35
+ ```
36
+
37
+ - Repeatable/comma-separated refs fan out into the same batch: `ace-overseer work-on --task 230 --task 231,232`
38
+ - Optional preset: `ace-overseer work-on --task <task-ref> --preset <preset-name>`
39
+ - After launch, switch to the tmux window and run `/ace-assign-drive`.
40
+ - Lab runtime variant (reserved agent + Herdr workspace): `ace-overseer work-on --runtime lab --work <work-id> --agent <agent-id>` -- `--task`/`--preset` are not supported with the Lab runtime.
41
+
42
+ Never improvise worktree provisioning by hand when `work-on` exists; ad-hoc
43
+ worktrees bypass the assignment lifecycle that `status` and `prune` rely on.
44
+
45
+ ### 2) Status: inspect active worktrees
46
+
47
+ ```bash
48
+ ace-overseer status # table dashboard
49
+ ace-overseer status --format json # machine-readable snapshot
50
+ ```
51
+
52
+ Lab runtime: `ace-overseer status --runtime lab [--project <project>]` (no
53
+ `--watch`; continuous status lives in each project Herdr session).
54
+
55
+ #### Status truth (non-negotiable executed check)
56
+
57
+ Recorded blockers are **claims, not state**. During any status review:
58
+
59
+ 1. For each pending owner-blocked task, look for an executable non-secret
60
+ check that can confirm or refute the blocker, and run it when one exists.
61
+ 2. Close or correct stale tasks **in the same change** -- do not accept a
62
+ recorded blocker as state and do not defer the correction to a later pass.
63
+ 3. Report what you executed (command + observed output) as the evidence for
64
+ each kept or closed blocker. A described or remembered check is never
65
+ sufficient.
66
+
67
+ ### 3) Prune: remove finished worktrees safely
68
+
69
+ Always preview before destructive cleanup:
70
+
71
+ ```bash
72
+ ace-overseer prune --dry-run
73
+ ```
74
+
75
+ Then apply only when confirmed:
76
+
77
+ ```bash
78
+ ace-overseer prune --yes
79
+ ```
80
+
81
+ - Targeted: `ace-overseer prune <task-ref|folder>...` or `ace-overseer prune --assignment <assignment-id>`
82
+ - Lab runtime: `ace-overseer prune <work-id>... --runtime lab --dry-run`, rerun with `--yes` to delegate each destruction to Lab.
83
+
84
+ #### Prune safety (non-negotiable executed check)
85
+
86
+ Prune/removal of a worktree or branch happens **only after an executed
87
+ preservation proof plus an executed no-active-writer check** for every
88
+ candidate:
89
+
90
+ 1. Prove the work is already merged into its base:
91
+
92
+ ```bash
93
+ git merge-base --is-ancestor <work-head> <base>
94
+ ```
95
+
96
+ Exit code 0 proves every commit on the work branch is contained in the
97
+ base.
98
+
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:
147
+
148
+ ```bash
149
+ ace-overseer status --format json
150
+ ```
151
+
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.
157
+
158
+ 4. A described or remembered proof is never sufficient -- run the commands
159
+ and observe the results in this session.
160
+
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.
166
+
167
+ ## Non-Negotiable Contracts Summary
168
+
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 |
173
+
174
+ ## Success Criteria
175
+
176
+ - Work starts only through `ace-overseer work-on` (or the Lab-runtime equivalent), never through ad-hoc manual worktree provisioning.
177
+ - Every status review re-verified pending owner-blocked tasks with an executed check and corrected stale state in the same change.
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.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Overseer
5
- VERSION = "0.15.6"
5
+ VERSION = "0.17.0"
6
6
  end
7
7
  end
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.15.6
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-05 00:00:00.000000000 Z
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
@@ -201,6 +201,7 @@ extensions: []
201
201
  extra_rdoc_files: []
202
202
  files:
203
203
  - ".ace-defaults/nav/protocols/skill-sources/ace-overseer.yml"
204
+ - ".ace-defaults/nav/protocols/wfi-sources/ace-overseer.yml"
204
205
  - ".ace-defaults/overseer/config.yml"
205
206
  - CHANGELOG.md
206
207
  - LICENSE