ace-handbook 0.34.0 → 0.35.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 +10 -0
- data/handbook/workflow-instructions/handbook/perform-delivery.wf.md +148 -1
- data/lib/ace/handbook/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: 363ae1e6cd89c714512860b8ca79d36d845dfe197b039b2bcedcf60c77548000
|
|
4
|
+
data.tar.gz: 077205f8a16622b6972759fa7038cf4fca5a8dcd866ba048f5aebc5bcd2d2ba1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8b32ee617623055b732bb731531d5039f6f1da1ea5a413cf3828e02ab38c08b93f6ce5bb18a97cfbbe29c9dc041adae39f3a370a205749ae791e404ed8266b19
|
|
7
|
+
data.tar.gz: 1de4da539f049133b9672cedb3575679b26089b6d3cbb2fb126aa9ddb4639391313e4bc4964a70699f7ae89df5e4cd5633c19d835c7c94e6b88bf38a2e66e1d0
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.35.0] - 2026-10-08
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Document standalone and protected delivery, current canonical campaign round/result handoff and scoped publication prerequisites. Keep source verification separate from installed Lab acceptance.
|
|
15
|
+
|
|
16
|
+
- Route unavailable publication prerequisites through the original assignment failure/status owners without claiming protected publication or retry authority.
|
|
17
|
+
|
|
18
|
+
- Route protected delivery through original worker merge request, canonical status and exact result consumption while preserving ordinary delivery and unresolved protected PR policy.
|
|
19
|
+
|
|
10
20
|
## [0.34.0] - 2026-10-05
|
|
11
21
|
|
|
12
22
|
### Changed
|
|
@@ -42,6 +42,22 @@ is recorded, inspect it with
|
|
|
42
42
|
(or `--default-server`, otherwise remote resolution). Inside ACE use source
|
|
43
43
|
`bin/ace-*` commands. Load the relevant implementation and test instructions.
|
|
44
44
|
|
|
45
|
+
## Coordinating parallel delivery
|
|
46
|
+
|
|
47
|
+
The coordinating agent owns the review and integration queue as well as dispatch.
|
|
48
|
+
Before opening another scope, review completed candidates and integrate those
|
|
49
|
+
whose executed checks and independent verdict permit it. If a candidate cannot
|
|
50
|
+
integrate, record its exact blocker and owner in the existing task checklist;
|
|
51
|
+
continue independent work only when it advances the same delivery objective.
|
|
52
|
+
Do not become a review bottleneck by repeatedly starting unrelated work while
|
|
53
|
+
finished candidates wait for your decision.
|
|
54
|
+
|
|
55
|
+
After integration, verify the actual main and requested remote refs and update
|
|
56
|
+
the current checklist. Distinguish committed in a worktree, accepted by review,
|
|
57
|
+
integrated locally, pushed and released. A partial merge is useful incremental
|
|
58
|
+
work, not task completion. Keep the remaining producer/consumer join explicit
|
|
59
|
+
and test it on the combined candidate before declaring that result delivered.
|
|
60
|
+
|
|
45
61
|
## Standalone delivery
|
|
46
62
|
|
|
47
63
|
Implement and commit the requested local task/inline scope using existing task
|
|
@@ -77,7 +93,118 @@ and merge evidence is accepted. Preparation after a completed delivery is a
|
|
|
77
93
|
separate follow-up candidate/scope and must obtain its own required evidence.
|
|
78
94
|
Publication remains separately authorized and gated, including OTP when required.
|
|
79
95
|
|
|
80
|
-
##
|
|
96
|
+
## Protected worker PR operations and status
|
|
97
|
+
|
|
98
|
+
An installed protected worker uses its original prepared assignment, attempt,
|
|
99
|
+
mapping and hierarchical scope. A role charter or selector is not an authority
|
|
100
|
+
capability: the public owners authenticate the actual worker descendant and
|
|
101
|
+
original birth. Other installed participants must delegate to the provisioned
|
|
102
|
+
worker/executor; they cannot select local delivery. Do not run the ordinary
|
|
103
|
+
managed delivery commands below from this protected route. Draft create/update
|
|
104
|
+
may precede independent review, through the same configured receiver. Ready and
|
|
105
|
+
merge require executed checks, current accepted independent review and the exact
|
|
106
|
+
operation authorization. See `wfi://git/pr/create` and `wfi://git/pr/update` for
|
|
107
|
+
the bounded draft input; credentials do not grant those operations.
|
|
108
|
+
|
|
109
|
+
1. Retain the exact accepted candidate head and candidate generation, original
|
|
110
|
+
assignment/attempt/mapping/scope, configured receiver ID, authorization and
|
|
111
|
+
request ID. Use the reviewed retained delivery parameters, explicit authorized
|
|
112
|
+
merge method and exact PR URL. Accepted independent review for this candidate
|
|
113
|
+
remains a canonical authority gate; local report files cannot replace it.
|
|
114
|
+
2. Before the first claim, read
|
|
115
|
+
`ace-assign authority status --mapping MAPPING --assignment ID --attempt ATTEMPT`.
|
|
116
|
+
Its `generation` is the current authority generation and
|
|
117
|
+
`result_candidate_generation` is the candidate generation. They are distinct;
|
|
118
|
+
never increment or substitute one for the other. Verify the candidate generation
|
|
119
|
+
matches the accepted candidate. Unavailable or changed selection blocks the
|
|
120
|
+
request. Keep the exact returned generation for this invocation; a conflict
|
|
121
|
+
is not permission to refresh it and resend.
|
|
122
|
+
3. Select `create`, `update`, `ready` or `merge`. Save one nonsecret input file:
|
|
123
|
+
create/update contain exactly `target`, `delivery`, `title`, `body`; ready
|
|
124
|
+
contains `target`, `delivery`; merge contains `target`, `delivery`, `method`.
|
|
125
|
+
A create target is the selected base repository URL; other operations use
|
|
126
|
+
the exact PR URL. Target contains that URL as `resource` and nullable
|
|
127
|
+
`artifact_digest`; delivery is the retained `forge_server`/`forge_default` and
|
|
128
|
+
complete `pr_provenance` mapping. Method is explicitly squash, merge or rebase.
|
|
129
|
+
The maintained owner reads one unchanged bounded regular file and computes its
|
|
130
|
+
canonical input digest. It does not accept a caller-supplied digest for request.
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{"target":{"resource":"https://forge.example/team/repo/pulls/25","artifact_digest":null},"delivery":{"forge_server":"forge-lab","forge_default":false,"pr_provenance":{"mode":"canonical","head_repository_url":"https://forge.example/team/repo","head_ref":"work","base_repository_url":"https://forge.example/team/repo","base_ref":"main"}},"method":"squash"}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
4. Invoke the existing configured receiver through
|
|
137
|
+
`ace-lab service request --project PROJECT --assignment ID --attempt ATTEMPT --mapping MAPPING --scope SCOPE --service SERVICE --candidate-head SHA --candidate-generation CANDIDATE-GENERATION --expected-generation AUTHORITY-GENERATION --operation OPERATION --authorization AUTHORIZATION --request-id REQUEST --input INPUT.json`.
|
|
138
|
+
No dry-run or standalone fallback exists here. Retain the returned original
|
|
139
|
+
`selection` from either `data` or `error`: it includes input_digest and target.
|
|
140
|
+
`service_claim_accepted` acknowledges a durable claim, not operation completion.
|
|
141
|
+
`service_claim_unconfirmed` requires inspection of this original request;
|
|
142
|
+
neither uncertainty nor a timeout authorizes automatic resubmission.
|
|
143
|
+
5. Read exact canonical status without an effect:
|
|
144
|
+
`ace-lab service status --request REQUEST --project PROJECT --assignment ID --attempt ATTEMPT --mapping MAPPING --scope SCOPE --candidate-head SHA --candidate-generation CANDIDATE-GENERATION --input-digest INPUT-DIGEST --target ORIGINAL-TARGET`.
|
|
145
|
+
Use the original returned selection; omit `--artifact-digest` for null, or
|
|
146
|
+
supply its exact original SHA256 when present. Status does not use a refreshed
|
|
147
|
+
expected generation and never repairs or restarts an uncertain service.
|
|
148
|
+
Missing receiver, review, authorization or installed owner stays a routed
|
|
149
|
+
blocker. A caller-local journal or remote PR observation is not canonical proof.
|
|
150
|
+
6. Only after canonical succeeded status, consume the exact completed result:
|
|
151
|
+
`ace-assign delivery --assignment ID --attempt ATTEMPT --mapping MAPPING --scope SCOPE --operation OPERATION --service-request REQUEST --candidate-head SHA --candidate-generation CANDIDATE-GENERATION --input-digest INPUT-DIGEST --target ORIGINAL-TARGET`.
|
|
152
|
+
Apply the same nullable artifact flag rule. Do not supply local `--tests`,
|
|
153
|
+
`--review`, title/body or parameters. The authority has already verified the
|
|
154
|
+
original review, completion receipt/import and exact input association, and
|
|
155
|
+
atomically published the delivery event. Worker consumption verifies that
|
|
156
|
+
event; it neither appends evidence nor invokes the provider again.
|
|
157
|
+
7. Preserve the original request and result references on resume. Exact read-only
|
|
158
|
+
status is safe; an explicit identical request may only return its retained
|
|
159
|
+
canonical claim/result and must not refresh selectors. Never retry an unknown
|
|
160
|
+
effect to obtain a receipt. Publication, deployment and synchronization still
|
|
161
|
+
require their separate authorization, evidence and OTP where applicable.
|
|
162
|
+
|
|
163
|
+
## Protected campaign result before readiness or merge
|
|
164
|
+
|
|
165
|
+
When the original protected parent registers `review_campaign`, finish the existing
|
|
166
|
+
R1/R2/R3 review policy through its linked, canonically settled collection/check/
|
|
167
|
+
approval children. Follow the protected handoff in `wfi://review/pr`; ordinary
|
|
168
|
+
`ace-review campaign` output and `ace-assign attempt finish` are not substitutes.
|
|
169
|
+
Draft create/update above may run before independent review. Ready and merge wait
|
|
170
|
+
for the current canonical parent campaign result, executed checks and independent
|
|
171
|
+
review acceptance.
|
|
172
|
+
|
|
173
|
+
1. Upload the documented R1 round input using the closed envelope
|
|
174
|
+
`{"version":1,"round":ROUND_OBJECT,"artifacts":[{"path":"report.md","sha256":"SHA256"}]}`.
|
|
175
|
+
Keep the original parent selectors, pinned head/base/scopes and registered
|
|
176
|
+
campaign/requirements/policy. The round attempt_id equals its stable mutation.
|
|
177
|
+
`ace-assign campaign-record-round --mapping MAPPING --assignment ID --attempt ATTEMPT --head SHA --candidate-generation N --mutation ROUND-ATTEMPT --input ROUND-ENVELOPE.json --artifact REPORT-BYTES`
|
|
178
|
+
supplies ordered immutable artifact bytes, not authority-readable worker paths.
|
|
179
|
+
Repeat the artifact flag in envelope order; settled child receipts establish
|
|
180
|
+
execution and approval, not editable reports alone.
|
|
181
|
+
2. After policy acceptance, download its verified exact bytes:
|
|
182
|
+
`ace-assign campaign-export-result --mapping MAPPING --assignment ID --attempt ATTEMPT --head SHA --candidate-generation N --output RESULT.json`.
|
|
183
|
+
Retain exported sha256/result_identity/journal_commit. The authority owns the
|
|
184
|
+
campaign store and validates the accepted immutable candidate; the output file
|
|
185
|
+
is a transfer artifact, not permission to change or bypass policy.
|
|
186
|
+
3. Keep the original parent's succeeded review receipt, independent actors and
|
|
187
|
+
executed checks. Add `campaign: {id: REGISTERED-CAMPAIGN, result: {path:
|
|
188
|
+
RESULT.json, sha256: EXPORTED-SHA256}}` and the identical reference in its
|
|
189
|
+
ordered artifacts. Upload exact exported bytes in that artifact slot with
|
|
190
|
+
`ace-assign submit-result --mapping MAPPING --assignment ID --attempt ATTEMPT --head SHA --candidate-generation N --expected-generation G --mutation RESULT-MUTATION --receipt PARENT-RECEIPT.json --artifact RESULT.json`.
|
|
191
|
+
Supply any other receipt artifacts in their declared order. Submission imports
|
|
192
|
+
evidence; the original reviewer/finish owner still owns acceptance and release.
|
|
193
|
+
G is persisted authority generation; N is candidate generation, never G.
|
|
194
|
+
|
|
195
|
+
Restart retains original mutations, envelope/receipt bytes, ordered artifacts and
|
|
196
|
+
selectors. Exact replay preserves the existing round/result; re-export only accepts
|
|
197
|
+
an identical existing file. Changed candidate, policy or missing canonical child
|
|
198
|
+
settlement rejects current acceptance without erasing history. Ready/merge service
|
|
199
|
+
admission rechecks the canonical parent campaign result. Route a missing producer
|
|
200
|
+
to its owner, keeping delivery unfinished; do not build a new receipt generator,
|
|
201
|
+
refresh conflicting generations or use ordinary commands as a protected fallback.
|
|
202
|
+
|
|
203
|
+
## Ordinary managed delivery steps
|
|
204
|
+
|
|
205
|
+
These steps retain the existing nonprotected managed workflow. They are not a
|
|
206
|
+
fallback for an installed protected participant or a blocked protected operation.
|
|
207
|
+
|
|
81
208
|
|
|
82
209
|
1. Record the requested delivery steps and their owners before implementation.
|
|
83
210
|
Follow the existing task-work plan. Commit the implementation and run appropriate
|
|
@@ -132,6 +259,26 @@ Publication remains separately authorized and gated, including OTP when required
|
|
|
132
259
|
authorized merge; publication is not mandatory. Keep the task in progress until
|
|
133
260
|
all of its actual acceptance criteria are satisfied.
|
|
134
261
|
|
|
262
|
+
## Unavailable publication prerequisite
|
|
263
|
+
|
|
264
|
+
Requested publication is a separate step, never a consequence of merge success.
|
|
265
|
+
Use the existing configured service policy and publisher prerequisites; an absent
|
|
266
|
+
publisher or unavailable required OTP is a routed blocker, not permission to run
|
|
267
|
+
an alternate command/account. The ordinary tested publisher's precondition
|
|
268
|
+
failure is ordinary source evidence only; it does not supply a protected
|
|
269
|
+
publication receipt or positive scoped OTP capability.
|
|
270
|
+
|
|
271
|
+
If the requested step cannot proceed, record its value-free cause through the
|
|
272
|
+
existing assignment failure owner:
|
|
273
|
+
`ace-assign fail --assignment ID@SCOPE --attempt ATTEMPT --mapping MAPPING --message "publication blocked: prerequisite unavailable"`.
|
|
274
|
+
Use the actual original protected selectors; ordinary assignments omit protected
|
|
275
|
+
selectors and use their existing target. Read `ace-assign status` for that same
|
|
276
|
+
scope afterward. The step remains failed/unfinished, with no publication receipt
|
|
277
|
+
or task completion. Preserve an uncertain service request separately: a failure
|
|
278
|
+
report must not claim a definitive denial or effect absence from a lost reply.
|
|
279
|
+
Protected recovery requires the reviewed new prepared version/attempt; never
|
|
280
|
+
finish the failed step or retry publication to manufacture success.
|
|
281
|
+
|
|
135
282
|
## Uncertainty and resume
|
|
136
283
|
|
|
137
284
|
In managed mode, read assignment status and retained qjl delivery events before
|
data/lib/ace/handbook/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ace-handbook
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.35.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michal Czyz
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-10-
|
|
10
|
+
date: 2026-10-08 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: ace-support-config
|