ace-handbook 0.34.0 → 0.35.1

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.ace-defaults/handbook/config.yml +0 -0
  3. data/.ace-defaults/handbook/providers/agents.yml +0 -0
  4. data/.ace-defaults/nav/protocols/cookbook-sources/ace-handbook.yml +0 -0
  5. data/.ace-defaults/nav/protocols/guide-sources/ace-handbook.yml +0 -0
  6. data/.ace-defaults/nav/protocols/skill-sources/ace-handbook.yml +0 -0
  7. data/.ace-defaults/nav/protocols/tmpl-sources/ace-handbook.yml +0 -0
  8. data/.ace-defaults/nav/protocols/wfi-sources/ace-handbook.yml +0 -0
  9. data/CHANGELOG.md +16 -0
  10. data/LICENSE +0 -0
  11. data/Rakefile +0 -0
  12. data/handbook/cookbooks/setup-starting-a-multi-ruby-gem-monorepo-with-ace.cookbook.md +0 -0
  13. data/handbook/cookbooks/setup-starting-an-astro-project-with-ace.cookbook.md +0 -0
  14. data/handbook/guides/ai-agent-integration.g.md +0 -0
  15. data/handbook/guides/atom-pattern.g.md +0 -0
  16. data/handbook/guides/changelog.g.md +0 -0
  17. data/handbook/guides/cli-dry-cli.g.md +0 -0
  18. data/handbook/guides/cli-support-cli.g.md +0 -0
  19. data/handbook/guides/coding-standards/ruby.md +0 -0
  20. data/handbook/guides/coding-standards/rust.md +0 -0
  21. data/handbook/guides/coding-standards/typescript.md +0 -0
  22. data/handbook/guides/coding-standards.g.md +0 -0
  23. data/handbook/guides/debug-troubleshooting.g.md +0 -0
  24. data/handbook/guides/error-handling/ruby.md +0 -0
  25. data/handbook/guides/error-handling/rust.md +0 -0
  26. data/handbook/guides/error-handling/typescript.md +0 -0
  27. data/handbook/guides/error-handling.g.md +0 -0
  28. data/handbook/guides/meta/agents-definition.g.md +0 -0
  29. data/handbook/guides/meta/guides-definition.g.md +0 -0
  30. data/handbook/guides/meta/markdown-definition.g.md +0 -0
  31. data/handbook/guides/meta/tools-definition.g.md +0 -0
  32. data/handbook/guides/meta/workflow-instructions-definition.g.md +0 -0
  33. data/handbook/guides/mono-repo-patterns.g.md +0 -0
  34. data/handbook/guides/multi-agent-research.g.md +0 -0
  35. data/handbook/guides/performance/ruby.md +0 -0
  36. data/handbook/guides/performance/rust.md +0 -0
  37. data/handbook/guides/performance/typescript.md +0 -0
  38. data/handbook/guides/performance.g.md +0 -0
  39. data/handbook/guides/prompt-caching.g.md +0 -0
  40. data/handbook/guides/quality-assurance/ruby.md +0 -0
  41. data/handbook/guides/quality-assurance/rust.md +0 -0
  42. data/handbook/guides/quality-assurance/typescript.md +0 -0
  43. data/handbook/guides/quality-assurance.g.md +0 -0
  44. data/handbook/guides/strategic-planning.g.md +0 -0
  45. data/handbook/guides/troubleshooting/ruby.md +0 -0
  46. data/handbook/guides/troubleshooting/rust.md +0 -0
  47. data/handbook/guides/troubleshooting/typescript.md +0 -0
  48. data/handbook/guides/workflow-context-embedding.g.md +0 -0
  49. data/handbook/skills/as-handbook-init-project/SKILL.md +0 -0
  50. data/handbook/skills/as-handbook-manage-agents/SKILL.md +0 -0
  51. data/handbook/skills/as-handbook-manage-cookbooks/SKILL.md +0 -0
  52. data/handbook/skills/as-handbook-manage-guides/SKILL.md +0 -0
  53. data/handbook/skills/as-handbook-manage-overrides/SKILL.md +0 -0
  54. data/handbook/skills/as-handbook-manage-workflows/SKILL.md +0 -0
  55. data/handbook/skills/as-handbook-parallel-research/SKILL.md +0 -0
  56. data/handbook/skills/as-handbook-perform-delivery/SKILL.md +0 -0
  57. data/handbook/skills/as-handbook-review-cookbooks/SKILL.md +0 -0
  58. data/handbook/skills/as-handbook-review-guides/SKILL.md +0 -0
  59. data/handbook/skills/as-handbook-review-workflows/SKILL.md +0 -0
  60. data/handbook/skills/as-handbook-synthesize-research/SKILL.md +0 -0
  61. data/handbook/skills/as-handbook-update-docs/SKILL.md +0 -0
  62. data/handbook/skills/as-release/SKILL.md +0 -0
  63. data/handbook/skills/as-release-bump-version/SKILL.md +0 -0
  64. data/handbook/skills/as-release-rubygems-publish/SKILL.md +0 -0
  65. data/handbook/skills/as-release-update-changelog/SKILL.md +0 -0
  66. data/handbook/templates/completed-work-documentation.md +0 -0
  67. data/handbook/templates/cookbooks/cookbook.template.md +0 -0
  68. data/handbook/templates/research-comparison.template.md +0 -0
  69. data/handbook/workflow-instructions/handbook/init-project.wf.md +0 -0
  70. data/handbook/workflow-instructions/handbook/manage-agents.wf.md +0 -0
  71. data/handbook/workflow-instructions/handbook/manage-cookbooks.wf.md +0 -0
  72. data/handbook/workflow-instructions/handbook/manage-guides.wf.md +0 -0
  73. data/handbook/workflow-instructions/handbook/manage-overrides.wf.md +10 -7
  74. data/handbook/workflow-instructions/handbook/manage-workflows.wf.md +0 -0
  75. data/handbook/workflow-instructions/handbook/parallel-research.wf.md +0 -0
  76. data/handbook/workflow-instructions/handbook/perform-delivery.wf.md +148 -1
  77. data/handbook/workflow-instructions/handbook/research.wf.md +0 -0
  78. data/handbook/workflow-instructions/handbook/review-cookbooks.wf.md +0 -0
  79. data/handbook/workflow-instructions/handbook/review-guides.wf.md +0 -0
  80. data/handbook/workflow-instructions/handbook/review-workflows.wf.md +0 -0
  81. data/handbook/workflow-instructions/handbook/synthesize-research.wf.md +0 -0
  82. data/handbook/workflow-instructions/handbook/update-docs.wf.md +0 -0
  83. data/handbook/workflow-instructions/release/bump-version.wf.md +0 -0
  84. data/handbook/workflow-instructions/release/local.wf.md +0 -0
  85. data/handbook/workflow-instructions/release/publish.wf.md +0 -0
  86. data/handbook/workflow-instructions/release/rubygems-publish.wf.md +0 -0
  87. data/handbook/workflow-instructions/release/update-changelog.wf.md +0 -0
  88. data/lib/ace/handbook/cli/commands/status.rb +0 -0
  89. data/lib/ace/handbook/cli.rb +0 -0
  90. data/lib/ace/handbook/models/skill_document.rb +0 -0
  91. data/lib/ace/handbook/molecules/skill_projection.rb +0 -0
  92. data/lib/ace/handbook/organisms/skill_inventory.rb +0 -0
  93. data/lib/ace/handbook/organisms/status_collector.rb +0 -0
  94. data/lib/ace/handbook/version.rb +1 -1
  95. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6bac5cea7762cdf27f71764a6d79f8149763f83d6fc001157db3b869f0313869
4
- data.tar.gz: 3062b5aa4e48907c9eeb26cc81d713ad8ccecdc948a9270e6324ea7e1eccd596
3
+ metadata.gz: 265fcff8879eef3a62977ecf5ac29dda8e252f06b5cb18f654da4064e6bb7de9
4
+ data.tar.gz: 7edd597cda3730560bfbf34ea456c02a230f10850da5c312a26d946926825dc6
5
5
  SHA512:
6
- metadata.gz: 0fa6aa552edbfae44a919b680f396adf7dff0b1dfd4c7e26d5c9c9eae183719ec169604bebe58591e9854a1eafa41a700e676d9c1378bed14e7718283a676fb9
7
- data.tar.gz: 6e61af1f361bcb6909fccbda5281a0342793ba0a79fd02369befdc29aa21ef5d30b2477725165e31bcbdf018c131ae17ab8a6cab740672c1f786e7a5d3d6ca66
6
+ metadata.gz: 39ff2ee4d8a19b8329fd3588c7a78cc222cc139cb5017cb8cc53579867bf270fcb3bf754777b9cadfabca1046268989e8bfa379a54f392ae3ef1bfaaf687f5e1
7
+ data.tar.gz: 82491f08d0331566b9e42539e40d402668ed510cc89dcdecc4f3850575de3f8d8717b94babae38f2505c876091d9dd671341867d535000b36424b3719b76853b
File without changes
File without changes
data/CHANGELOG.md CHANGED
@@ -7,6 +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.35.1] - 2026-10-10
11
+
12
+ ### Technical
13
+
14
+ - Clarify guide candidate discovery and the scope of this monorepo's checked-in priority-5 workflow source in `wfi://handbook/manage-overrides`.
15
+
16
+ ## [0.35.0] - 2026-10-08
17
+
18
+ ### Changed
19
+
20
+ - Document standalone and protected delivery, current canonical campaign round/result handoff and scoped publication prerequisites. Keep source verification separate from installed Lab acceptance.
21
+
22
+ - Route unavailable publication prerequisites through the original assignment failure/status owners without claiming protected publication or retry authority.
23
+
24
+ - Route protected delivery through original worker merge request, canonical status and exact result consumption while preserving ordinary delivery and unresolved protected PR policy.
25
+
10
26
  ## [0.34.0] - 2026-10-05
11
27
 
12
28
  ### Changed
data/LICENSE CHANGED
File without changes
data/Rakefile CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -34,7 +34,7 @@ per URI.
34
34
 
35
35
  | Surface | Protocol | Project-local location | Overridable? | Winner of duplicates (shipped defaults) |
36
36
  |---------|----------|------------------------|--------------|------------------------------------------|
37
- | Workflows | `wfi://` | `.ace-handbook/workflow-instructions/<ns>/<name>.wf.md` | Yes | Project-local, when its source priority is lower than the gem source's (e.g. the shipped `local` source at priority 5 vs gem at 10) |
37
+ | Workflows | `wfi://` | `.ace-handbook/workflow-instructions/<ns>/<name>.wf.md` | Yes | Project-local, when its source priority is lower than the gem source's (e.g. this monorepo's checked-in `local` source at priority 5 vs gem at 10) |
38
38
  | Cookbooks | `cookbook://` | `.ace-handbook/cookbooks/<name>.cookbook.md` | Yes | The candidate from the source with the lower priority number. The shipped project-local default registers priority 20 and the gem source 10, so **the gem wins by default**; register a project cookbook source with priority < 10 to make project-local win |
39
39
  | Guides | `guide://` | `handbook/guides/<name>.g.md` | Yes, with registration | Requires a project source registration (`.ace/nav/protocols/guide-sources/local.yml` → `handbook/guides`); with priority < 10 the project-local guide wins. Without registration the gem wins |
40
40
  | Skills | `skill://` | none | **No** | Always the gem. Skills are thin layers; override the workflow the skill calls instead |
@@ -44,9 +44,9 @@ per URI.
44
44
 
45
45
  Sources for a protocol are scanned in ascending priority order (lower number = higher precedence); the first source
46
46
  containing the resource wins and remaining duplicates are ignored. Registration defaults: project sources 10, user
47
- sources 50, gem defaults 100 — an individual source registration may pin another value (this is why the shipped
48
- `local` workflow source at priority 5 beats the gem at 10, while the shipped project-local cookbook source at 20 loses
49
- to the gem at 10).
47
+ sources 50, gem defaults 100 — an individual source registration may pin another value. In this monorepo, the checked-in
48
+ `.ace/nav/protocols/wfi-sources/local.yml` sets priority 5 and beats the gem at 10; downstream projects must register
49
+ their own local workflow source. The shipped project-local cookbook source at 20 loses to the gem at 10.
50
50
 
51
51
  To answer "why did this candidate win?" for a concrete URI without planting probe files:
52
52
 
@@ -73,7 +73,8 @@ are ignored and resolution always returns the gem file. The design rule is: **ov
73
73
  2. **Create the project-local file** at the surface's project-local location (see table), keeping the canonical
74
74
  frontmatter and structure so tools keep resolving it.
75
75
  3. **Ensure the source registration makes your file win:**
76
- - workflows: keep `.ace/nav/protocols/wfi-sources/local.yml` priority below the gem source (shipped default: 5).
76
+ - workflows: register `.ace/nav/protocols/wfi-sources/local.yml` with priority below the gem source; this monorepo's
77
+ checked-in registration uses 5, but downstream projects do not receive that project-local source by default.
77
78
  - cookbooks: register `.ace/nav/protocols/cookbook-sources/local.yml` with priority < 10 (the shipped
78
79
  project-local default of 20 loses to the gem's 10).
79
80
  - guides: register `.ace/nav/protocols/guide-sources/local.yml` pointing at `handbook/guides` with priority < 10;
@@ -135,8 +136,10 @@ ace-handbook sync # regenerates .agents/ski
135
136
 
136
137
  - **Override silently loses:** inspect `ace-nav resolve <uri> --why`; the losing candidate's source priority is too
137
138
  high — lower it in the source registration.
138
- - **Guide override not discovered at all:** no project guide source is registered; add
139
- `.ace/nav/protocols/guide-sources/local.yml` (see Process Step 3).
139
+ - **Guide override does not win:** a planted guide may be discovered as a losing candidate through the
140
+ `@ace-support-nav` gem-default example source (`./handbook/guides`, priority 100), or it may be absent from the
141
+ candidates, depending on source registration. Register `.ace/nav/protocols/guide-sources/local.yml` with priority
142
+ below the gem source (see Process Step 3), then confirm the project candidate wins with `ace-nav resolve --why`.
140
143
  - **Skill edit appears to do nothing:** skills are not overridable; override the workflow the skill calls.
141
144
  - **`.agents/skills/` edits keep disappearing:** expected — `ace-handbook sync` regenerates the projection and prunes
142
145
  stale entries; edit canonical skills in the owning gem.
@@ -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
- ## Managed delivery steps
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ace
4
4
  module Handbook
5
- VERSION = "0.34.0"
5
+ VERSION = "0.35.1"
6
6
  end
7
7
  end
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.34.0
4
+ version: 0.35.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Czyz
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-10-05 00:00:00.000000000 Z
10
+ date: 2026-10-12 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ace-support-config