@mgiles/perk 3.0.0 → 3.2.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.
- package/extension/adapters/planAdapterPlannotator.ts +12 -9
- package/extension/doors/address.ts +11 -0
- package/extension/doors/commitCompact.ts +98 -10
- package/extension/doors/draftReviewWaveTools.ts +43 -15
- package/extension/doors/dreamWaveTools.ts +489 -0
- package/extension/doors/land.ts +6 -0
- package/extension/doors/learn.ts +16 -3
- package/extension/doors/lifecycleGates.ts +36 -1
- package/extension/doors/objectiveReviewBrowser.ts +36 -13
- package/extension/doors/objectiveStack.ts +424 -24
- package/extension/doors/planReviewBrowser.ts +30 -8
- package/extension/doors/plannotatorHandoff.ts +80 -8
- package/extension/doors/prReview.ts +158 -50
- package/extension/doors/prReviewBrowser.ts +75 -27
- package/extension/doors/prReviewDynamic.ts +33 -13
- package/extension/doors/ready.ts +209 -17
- package/extension/doors/reviewWaveTools.ts +61 -17
- package/extension/doors/stackReviewBrowser.ts +573 -0
- package/extension/doors/submit.ts +36 -10
- package/extension/doors/submitPrReview.ts +116 -19
- package/extension/factories/objectiveDraft.ts +95 -27
- package/extension/factories/objectiveDreamReport.ts +347 -0
- package/extension/factories/objectivePlan.ts +12 -6
- package/extension/factories/objectiveSave.ts +77 -1
- package/extension/factories/planReview.ts +173 -10
- package/extension/index.ts +88 -16
- package/extension/substrate/agentScratch.ts +171 -0
- package/extension/substrate/bindingDelivery.ts +9 -11
- package/extension/substrate/cache.ts +92 -2
- package/extension/substrate/command.ts +9 -6
- package/extension/substrate/config.ts +10 -3
- package/extension/substrate/git.ts +85 -2
- package/extension/substrate/paths.ts +2 -7
- package/extension/substrate/resolverLease.ts +363 -0
- package/extension/substrate/result.ts +3 -2
- package/extension/substrate/sessionData.ts +6 -4
- package/extension/substrate/sessionPointers.ts +3 -4
- package/extension/substrate/toolGating.ts +25 -0
- package/extension/substrate/workflowState.ts +57 -5
- package/extension/surfaces/report.ts +38 -12
- package/extension/surfaces/surfaces.ts +129 -7
- package/extension/vendor/btw/btw.ts +38 -6
- package/extension/waves/adversarialReviewWave.ts +34 -3
- package/extension/waves/draftReviewWave.ts +17 -1
- package/extension/waves/dreamReducerWave.ts +700 -0
- package/extension/waves/dreamReport.ts +1494 -0
- package/extension/waves/dreamWave.ts +927 -0
- package/extension/waves/harvestWave.ts +1 -1
- package/extension/waves/ponytail.ts +104 -0
- package/extension/waves/prReviewDynamicWave.ts +115 -34
- package/extension/waves/prReviewWave.ts +122 -17
- package/extension/waves/reportWave.ts +103 -7
- package/extension/worker/readOnlySession.ts +2 -3
- package/package.json +6 -3
- package/prompts/_fixtures/live.yaml +112 -0
- package/prompts/commit-and-compact-continuation.md +13 -0
- package/prompts/contexts/adapters/plannotator-objective.md +7 -1
- package/prompts/contexts/adapters/plannotator-plan.md +7 -1
- package/prompts/contexts/adapters/tombell-plan.md +4 -0
- package/prompts/contexts/plan-authoring.md +6 -5
- package/prompts/stages/conflict-resolution-continuation.md +6 -0
- package/prompts/stages/conflict-resolution.md +2 -2
- package/prompts/stages/learn-dream.md +10 -0
- package/prompts/stages/objective-author/adopt.md +1 -1
- package/prompts/stages/objective-author/file.md +1 -1
- package/prompts/stages/objective-author/seed.md +1 -1
- package/prompts/stages/objective-reconcile-ready.md +7 -0
- package/prompts/stages/objective-review-browser.md +1 -1
- package/prompts/stages/objective-sync.md +1 -1
- package/prompts/stages/plan-review-browser.md +1 -1
- package/prompts/stages/pr-review-browser/active.md +1 -1
- package/prompts/stages/pr-review-browser/foreign.md +1 -1
- package/prompts/stages/pr-review-dynamic.md +5 -5
- package/prompts/stages/pr-review-terminal/active.md +1 -1
- package/prompts/stages/pr-review-terminal/foreign.md +1 -1
- package/prompts/stages/pr-review-terminal/local.md +1 -1
- package/prompts/stages/pr-review.md +5 -5
- package/prompts/stages/stack-review/cold.md +1 -0
- package/prompts/stages/stack-review-browser/stack.md +23 -0
- package/shared/README.md +0 -3
- package/shared/bindings.yaml +6 -0
- package/shared/contracts.md +3784 -1851
- package/shared/registry.yaml +28 -13
- package/shared/schemas/inputs/review-post-batch.schema.json +14 -1
- package/shared/schemas/outputs/objective-doctor.schema.json +39 -1
- package/shared/schemas/outputs/objective-stack-status.schema.json +172 -1
- package/shared/schemas/outputs/pr-land.schema.json +3 -3
- package/shared/schemas/outputs/pr-ready.schema.json +110 -2
- package/shared/contracts-history.md +0 -605
package/shared/registry.yaml
CHANGED
|
@@ -78,7 +78,7 @@ stages:
|
|
|
78
78
|
command: gist author # dedicated seeded cold door (perk gist author)
|
|
79
79
|
requires: [] # nothing exists yet — this stage CREATES the gist
|
|
80
80
|
reads: []
|
|
81
|
-
writes: [session.workflow-state, cache.session-data] # the read-only `mode` append; gist_draft writes the gist-draft artifact + its session_artifacts pointer
|
|
81
|
+
writes: [session.workflow-state, cache.session-data, cache.scratch] # the read-only `mode` append; gist_draft writes the gist-draft artifact + its session_artifacts pointer; eligible turns may provision agent scratch
|
|
82
82
|
predecessors: [] # an initial of the disconnected gist component
|
|
83
83
|
successors: [gist-save]
|
|
84
84
|
|
|
@@ -91,7 +91,7 @@ stages:
|
|
|
91
91
|
command: gist save # the gist_save terminating tool + /gist-save command
|
|
92
92
|
requires: []
|
|
93
93
|
reads: []
|
|
94
|
-
writes: [github.gist, session.workflow-state] # create the gist issue/project
|
|
94
|
+
writes: [github.gist, session.workflow-state, cache.scratch] # create the gist issue/project; eligible turns may provision agent scratch
|
|
95
95
|
predecessors: [gist-author]
|
|
96
96
|
successors: [] # a terminal — consumption happens via the adoption doors, not edges
|
|
97
97
|
|
|
@@ -104,7 +104,7 @@ stages:
|
|
|
104
104
|
command: objective author # P3.T2: dedicated seeded cold door (perk objective author)
|
|
105
105
|
requires: [] # nothing exists yet — this stage CREATES the objective
|
|
106
106
|
reads: []
|
|
107
|
-
writes: [session.workflow-state, cache.session-data] # the read-only `mode` append (the gate toggle); #352 Node 2.1: objective_draft writes the objective-draft artifact + its session_artifacts pointer
|
|
107
|
+
writes: [session.workflow-state, cache.session-data, cache.scratch] # the read-only `mode` append (the gate toggle); #352 Node 2.1: objective_draft writes the objective-draft artifact + its session_artifacts pointer; eligible turns may provision agent scratch
|
|
108
108
|
predecessors: [] # the new single initial (authoring precedes everything)
|
|
109
109
|
successors: [objective-save]
|
|
110
110
|
|
|
@@ -117,20 +117,20 @@ stages:
|
|
|
117
117
|
command: objective save # P3.T2: the objective_save terminating tool + /objective-save command
|
|
118
118
|
requires: []
|
|
119
119
|
reads: []
|
|
120
|
-
writes: [github.objective, session.workflow-state] # create the objective issue; link active_objective
|
|
120
|
+
writes: [github.objective, session.workflow-state, cache.scratch] # create the objective issue; link active_objective; eligible turns may provision agent scratch
|
|
121
121
|
predecessors: [objective-author]
|
|
122
122
|
successors: [objective-plan]
|
|
123
123
|
|
|
124
124
|
- id: objective-plan
|
|
125
125
|
summary: Select the next objective node and author a bounded plan (read-only).
|
|
126
126
|
mode: read-only
|
|
127
|
-
worktree: none # interactive planning, like plan — no branch yet
|
|
127
|
+
worktree: none # interactive planning, like plan — no branch yet; the cold door overrides to a transient reuse stage for a stacked child layer with a live predecessor branch (§8.46)
|
|
128
128
|
doors: { warm: true, cold_local: true, cold_remote: false } # interactive local exploration
|
|
129
129
|
run_id: { warm: keep, cold_local: mint, cold_remote: mint }
|
|
130
130
|
command: objective plan # P2.T10: dedicated cold door (perk objective plan) + /objective-plan
|
|
131
131
|
requires: [github.objective] # an objective issue must exist
|
|
132
132
|
reads: [github.objective] # roadmap nodes + next-node selection
|
|
133
|
-
writes: [github.objective, session.workflow-state, cache.session-data] # mark node planning; set active_objective; #339 Node 2.1: plan_draft writes the working-plan artifact + its session_artifacts pointer
|
|
133
|
+
writes: [github.objective, session.workflow-state, cache.session-data, cache.scratch] # mark node planning; set active_objective; #339 Node 2.1: plan_draft writes the working-plan artifact + its session_artifacts pointer; eligible turns may provision agent scratch
|
|
134
134
|
predecessors: [objective-save] # P3.T2: objective-save now precedes planning
|
|
135
135
|
successors: [plan]
|
|
136
136
|
|
|
@@ -143,7 +143,7 @@ stages:
|
|
|
143
143
|
command: plan # slash = /plan (perk-owned P2.T2a; toggles the read-only tool gate)
|
|
144
144
|
requires: []
|
|
145
145
|
reads: []
|
|
146
|
-
writes: [session.workflow-state, cache.session-data] # P2.T2a: /plan enter/exit appends `mode`; #339 Node 2.1: plan_draft writes the working-plan artifact + its session_artifacts pointer
|
|
146
|
+
writes: [session.workflow-state, cache.session-data, cache.scratch] # P2.T2a: /plan enter/exit appends `mode`; #339 Node 2.1: plan_draft writes the working-plan artifact + its session_artifacts pointer; eligible turns may provision agent scratch
|
|
147
147
|
predecessors: [objective-plan] # P2.T10: objective-plan is the new single initial
|
|
148
148
|
successors: [save]
|
|
149
149
|
|
|
@@ -156,7 +156,7 @@ stages:
|
|
|
156
156
|
command: plan save # cold: the merged `perk plan save` door (Node 3.2); warm twin: the plan_save tool + /plan-save command
|
|
157
157
|
requires: []
|
|
158
158
|
reads: []
|
|
159
|
-
writes: [github.plan, cache.plan-ref, session.workflow-state] # T2a: plan issue; T2b: plan-ref pointer; T3: warm door appends active_plan_ref
|
|
159
|
+
writes: [github.plan, cache.plan-ref, session.workflow-state, cache.scratch] # T2a: plan issue; T2b: plan-ref pointer; T3: warm door appends active_plan_ref; eligible turns may provision agent scratch
|
|
160
160
|
predecessors: [plan]
|
|
161
161
|
successors: [implement]
|
|
162
162
|
|
|
@@ -169,7 +169,7 @@ stages:
|
|
|
169
169
|
command: implement
|
|
170
170
|
requires: [cache.plan-ref] # T4: cold door derives plan-<pr_id> from the active ref
|
|
171
171
|
reads: [cache.plan-ref] # T4: positions the worktree from the ref (agent reads github.plan)
|
|
172
|
-
writes: [session.workflow-state] # T4: the worktree session links active_plan_ref on session_start
|
|
172
|
+
writes: [session.workflow-state, cache.scratch] # T4: the worktree session links active_plan_ref on session_start; eligible turns may provision agent scratch
|
|
173
173
|
predecessors: [save]
|
|
174
174
|
successors: [submit]
|
|
175
175
|
|
|
@@ -185,7 +185,7 @@ stages:
|
|
|
185
185
|
# journal fold) and the native stack, and writes the journal (objective comments), the
|
|
186
186
|
# checkpoint pair (plan header), and the stack registration. Incremental touches neither.
|
|
187
187
|
reads: [cache.plan-ref, github.plan, github.objective, github.stack]
|
|
188
|
-
writes: [github.pr, github.plan, github.objective, github.stack]
|
|
188
|
+
writes: [github.pr, github.plan, github.objective, github.stack, cache.scratch]
|
|
189
189
|
predecessors: [implement]
|
|
190
190
|
successors: [address]
|
|
191
191
|
|
|
@@ -200,7 +200,7 @@ stages:
|
|
|
200
200
|
# submit before resolving. The stacked route owns the objective journal + native stack.
|
|
201
201
|
requires: [github.pr] # the PR whose feedback we address
|
|
202
202
|
reads: [cache.plan-ref, github.plan, github.pr, github.review-threads, github.comments, github.objective, github.stack]
|
|
203
|
-
writes: [github.review-threads, github.comments, github.pr, github.plan, github.objective, github.stack, session.workflow-state]
|
|
203
|
+
writes: [github.review-threads, github.comments, github.pr, github.plan, github.objective, github.stack, session.workflow-state, cache.scratch]
|
|
204
204
|
predecessors: [submit]
|
|
205
205
|
successors: [land]
|
|
206
206
|
|
|
@@ -213,7 +213,7 @@ stages:
|
|
|
213
213
|
command: pr land
|
|
214
214
|
requires: [github.pr] # T5b: the PR to merge must exist
|
|
215
215
|
reads: [cache.plan-ref, github.pr, github.objective] # T5b ref->branch->PR; T11a node lookup
|
|
216
|
-
writes: [github.pr, cache.markers, github.objective, github.plan] # T5b merge+marker; T11a mechanical node-done; §8.36 learn_state header stamp
|
|
216
|
+
writes: [github.pr, cache.markers, github.objective, github.plan, cache.scratch] # T5b merge+marker; T11a mechanical node-done; §8.36 learn_state header stamp; eligible turns may provision agent scratch
|
|
217
217
|
predecessors: [address]
|
|
218
218
|
successors: [learn]
|
|
219
219
|
|
|
@@ -234,7 +234,7 @@ stages:
|
|
|
234
234
|
# keys (no new gateway op) — the existing learn tool / learn capture worker still persist.
|
|
235
235
|
requires: [cache.markers] # pending-learn gates the worktree
|
|
236
236
|
reads: [cache.markers, cache.plan-ref] # was it set? + the plan ref -> issue number/run_id
|
|
237
|
-
writes: [cache.markers, github.learn, github.comments, github.plan] # clear marker; create learn issue + back-link; §8.36 learn_state header stamp
|
|
237
|
+
writes: [cache.markers, github.learn, github.comments, github.plan, cache.scratch] # clear marker; create learn issue + back-link; §8.36 learn_state header stamp; eligible turns may provision agent scratch
|
|
238
238
|
predecessors: [land]
|
|
239
239
|
successors: []
|
|
240
240
|
|
|
@@ -250,3 +250,18 @@ stages:
|
|
|
250
250
|
writes: [session.workflow-state, cache.scratch] # the claim append; run_audit_wave writes <bundle>/verdicts.json under scratch
|
|
251
251
|
predecessors: [] # a deliberately isolated node — the dev-only audit component
|
|
252
252
|
successors: []
|
|
253
|
+
|
|
254
|
+
- id: stack-review
|
|
255
|
+
summary: Review a stacked PR train in the plannotator browser with judgment-routed per-PR posting.
|
|
256
|
+
mode: read-write # deliberate parity with the warm /stack-review-browser door — the
|
|
257
|
+
# human is present and nothing auto-posts (contracts.md §8.4)
|
|
258
|
+
worktree: none # runs in the invoking checkout; the review checkout is the
|
|
259
|
+
# detached review-<top> worktree the cold door materialized
|
|
260
|
+
doors: { warm: false, cold_local: true, cold_remote: false } # interactive browser flow — local-only by design
|
|
261
|
+
run_id: { warm: keep, cold_local: mint, cold_remote: mint }
|
|
262
|
+
command: objective stack review # label — the dedicated cold door under the objective stack group
|
|
263
|
+
requires: []
|
|
264
|
+
reads: []
|
|
265
|
+
writes: [github.pr, github.review-threads, session.workflow-state, cache.scratch] # per-PR review posting via submit_pr_review; the claim append; scratch
|
|
266
|
+
predecessors: [] # a deliberately isolated node — the stacked-review component
|
|
267
|
+
successors: []
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"additionalProperties": false,
|
|
32
|
-
"description": "The strict `/pr-review` batch shape
|
|
32
|
+
"description": "The strict `/pr-review` batch shape.\n\n`comments`/`fyi` stay nullable so an explicit `null` is tolerated (today's behavior),\nnormalized to `[]` in conversion. `line: int` and `expected_pr: int` reject\n`bool`/`float`/`str` under strict validation.",
|
|
33
33
|
"properties": {
|
|
34
34
|
"verdict": {
|
|
35
35
|
"enum": [
|
|
@@ -73,6 +73,19 @@
|
|
|
73
73
|
],
|
|
74
74
|
"default": null,
|
|
75
75
|
"title": "Fyi"
|
|
76
|
+
},
|
|
77
|
+
"expected_pr": {
|
|
78
|
+
"anyOf": [
|
|
79
|
+
{
|
|
80
|
+
"exclusiveMinimum": 0,
|
|
81
|
+
"type": "integer"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"type": "null"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"default": null,
|
|
88
|
+
"title": "Expected Pr"
|
|
76
89
|
}
|
|
77
90
|
},
|
|
78
91
|
"required": [
|
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$defs": {
|
|
3
|
+
"_CorruptionFindingOut": {
|
|
4
|
+
"additionalProperties": false,
|
|
5
|
+
"description": "One kind-corruption finding over the objective's issue-tier carrier (report-only \u2014\n``--fix`` never touches it; no repair code path exists).",
|
|
6
|
+
"properties": {
|
|
7
|
+
"code": {
|
|
8
|
+
"title": "Code",
|
|
9
|
+
"type": "string"
|
|
10
|
+
},
|
|
11
|
+
"carrier": {
|
|
12
|
+
"title": "Carrier",
|
|
13
|
+
"type": "string"
|
|
14
|
+
},
|
|
15
|
+
"message": {
|
|
16
|
+
"title": "Message",
|
|
17
|
+
"type": "string"
|
|
18
|
+
},
|
|
19
|
+
"remediation": {
|
|
20
|
+
"title": "Remediation",
|
|
21
|
+
"type": "string"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"required": [
|
|
25
|
+
"code",
|
|
26
|
+
"carrier",
|
|
27
|
+
"message",
|
|
28
|
+
"remediation"
|
|
29
|
+
],
|
|
30
|
+
"title": "_CorruptionFindingOut",
|
|
31
|
+
"type": "object"
|
|
32
|
+
},
|
|
3
33
|
"_DriftConditionOut": {
|
|
4
34
|
"additionalProperties": false,
|
|
5
35
|
"properties": {
|
|
@@ -432,6 +462,13 @@
|
|
|
432
462
|
"type": "null"
|
|
433
463
|
}
|
|
434
464
|
]
|
|
465
|
+
},
|
|
466
|
+
"corruption": {
|
|
467
|
+
"items": {
|
|
468
|
+
"$ref": "#/$defs/_CorruptionFindingOut"
|
|
469
|
+
},
|
|
470
|
+
"title": "Corruption",
|
|
471
|
+
"type": "array"
|
|
435
472
|
}
|
|
436
473
|
},
|
|
437
474
|
"required": [
|
|
@@ -442,7 +479,8 @@
|
|
|
442
479
|
"fix",
|
|
443
480
|
"redirected_from",
|
|
444
481
|
"train",
|
|
445
|
-
"train_fix"
|
|
482
|
+
"train_fix",
|
|
483
|
+
"corruption"
|
|
446
484
|
],
|
|
447
485
|
"title": "ObjectiveDoctorOut",
|
|
448
486
|
"type": "object"
|
|
@@ -123,6 +123,129 @@
|
|
|
123
123
|
"title": "FindingOut",
|
|
124
124
|
"type": "object"
|
|
125
125
|
},
|
|
126
|
+
"GateBlockerOut": {
|
|
127
|
+
"additionalProperties": false,
|
|
128
|
+
"description": "One planning-gate blocker row (contracts.md \u00a78.46) \u2014 the shared machine\ndiscriminator every gate-carrying envelope serializes.\n\n``kind`` is ``\"technical\"`` (a train readiness veto \u2014 ``code``/``message`` verbatim, or\nthe gate-owned defensive ``dependency_not_ready``) or ``\"handoff\"`` (a handoff-blocked\ndirect dependency \u2014 fields-only, no prose: consumers read the pinned fields). Handoff\nrows derive from a verified-PUBLISHED layer, so ``plan``/``pr``/``remediation`` are\nalways populated there (the nullable wire types exist for the technical rows).",
|
|
129
|
+
"properties": {
|
|
130
|
+
"kind": {
|
|
131
|
+
"title": "Kind",
|
|
132
|
+
"type": "string"
|
|
133
|
+
},
|
|
134
|
+
"code": {
|
|
135
|
+
"anyOf": [
|
|
136
|
+
{
|
|
137
|
+
"type": "string"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"type": "null"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
"title": "Code"
|
|
144
|
+
},
|
|
145
|
+
"message": {
|
|
146
|
+
"anyOf": [
|
|
147
|
+
{
|
|
148
|
+
"type": "string"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"type": "null"
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"title": "Message"
|
|
155
|
+
},
|
|
156
|
+
"dependency_node_id": {
|
|
157
|
+
"anyOf": [
|
|
158
|
+
{
|
|
159
|
+
"type": "string"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"type": "null"
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"title": "Dependency Node Id"
|
|
166
|
+
},
|
|
167
|
+
"plan": {
|
|
168
|
+
"anyOf": [
|
|
169
|
+
{
|
|
170
|
+
"type": "string"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"type": "null"
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"title": "Plan"
|
|
177
|
+
},
|
|
178
|
+
"pr": {
|
|
179
|
+
"anyOf": [
|
|
180
|
+
{
|
|
181
|
+
"type": "integer"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"type": "null"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"title": "Pr"
|
|
188
|
+
},
|
|
189
|
+
"handoff_state": {
|
|
190
|
+
"anyOf": [
|
|
191
|
+
{
|
|
192
|
+
"type": "string"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"type": "null"
|
|
196
|
+
}
|
|
197
|
+
],
|
|
198
|
+
"title": "Handoff State"
|
|
199
|
+
},
|
|
200
|
+
"stamped_head": {
|
|
201
|
+
"anyOf": [
|
|
202
|
+
{
|
|
203
|
+
"type": "string"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"type": "null"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"title": "Stamped Head"
|
|
210
|
+
},
|
|
211
|
+
"current_head": {
|
|
212
|
+
"anyOf": [
|
|
213
|
+
{
|
|
214
|
+
"type": "string"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"type": "null"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"title": "Current Head"
|
|
221
|
+
},
|
|
222
|
+
"remediation": {
|
|
223
|
+
"anyOf": [
|
|
224
|
+
{
|
|
225
|
+
"type": "string"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"type": "null"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"title": "Remediation"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"required": [
|
|
235
|
+
"kind",
|
|
236
|
+
"code",
|
|
237
|
+
"message",
|
|
238
|
+
"dependency_node_id",
|
|
239
|
+
"plan",
|
|
240
|
+
"pr",
|
|
241
|
+
"handoff_state",
|
|
242
|
+
"stamped_head",
|
|
243
|
+
"current_head",
|
|
244
|
+
"remediation"
|
|
245
|
+
],
|
|
246
|
+
"title": "GateBlockerOut",
|
|
247
|
+
"type": "object"
|
|
248
|
+
},
|
|
126
249
|
"LayerOut": {
|
|
127
250
|
"additionalProperties": false,
|
|
128
251
|
"properties": {
|
|
@@ -245,6 +368,10 @@
|
|
|
245
368
|
}
|
|
246
369
|
],
|
|
247
370
|
"title": "Expected Pr Base"
|
|
371
|
+
},
|
|
372
|
+
"handoff": {
|
|
373
|
+
"title": "Handoff",
|
|
374
|
+
"type": "string"
|
|
248
375
|
}
|
|
249
376
|
},
|
|
250
377
|
"required": [
|
|
@@ -263,7 +390,8 @@
|
|
|
263
390
|
"published_head_sha",
|
|
264
391
|
"observed_remote_head_sha",
|
|
265
392
|
"observed_pr_base",
|
|
266
|
-
"expected_pr_base"
|
|
393
|
+
"expected_pr_base",
|
|
394
|
+
"handoff"
|
|
267
395
|
],
|
|
268
396
|
"title": "LayerOut",
|
|
269
397
|
"type": "object"
|
|
@@ -406,6 +534,41 @@
|
|
|
406
534
|
"title": "OrphanedResidueOut",
|
|
407
535
|
"type": "object"
|
|
408
536
|
},
|
|
537
|
+
"PlanningGateOut": {
|
|
538
|
+
"additionalProperties": false,
|
|
539
|
+
"description": "The composed planning-gate block (contracts.md \u00a78.46): the evaluated candidate\n(``None`` when no candidate exists), the technical-AND-handoff verdict for\nplanning/fresh starts, and the blocker rows.",
|
|
540
|
+
"properties": {
|
|
541
|
+
"node_id": {
|
|
542
|
+
"anyOf": [
|
|
543
|
+
{
|
|
544
|
+
"type": "string"
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
"type": "null"
|
|
548
|
+
}
|
|
549
|
+
],
|
|
550
|
+
"title": "Node Id"
|
|
551
|
+
},
|
|
552
|
+
"ready": {
|
|
553
|
+
"title": "Ready",
|
|
554
|
+
"type": "boolean"
|
|
555
|
+
},
|
|
556
|
+
"blockers": {
|
|
557
|
+
"items": {
|
|
558
|
+
"$ref": "#/$defs/GateBlockerOut"
|
|
559
|
+
},
|
|
560
|
+
"title": "Blockers",
|
|
561
|
+
"type": "array"
|
|
562
|
+
}
|
|
563
|
+
},
|
|
564
|
+
"required": [
|
|
565
|
+
"node_id",
|
|
566
|
+
"ready",
|
|
567
|
+
"blockers"
|
|
568
|
+
],
|
|
569
|
+
"title": "PlanningGateOut",
|
|
570
|
+
"type": "object"
|
|
571
|
+
},
|
|
409
572
|
"TrainOut": {
|
|
410
573
|
"additionalProperties": false,
|
|
411
574
|
"properties": {
|
|
@@ -477,6 +640,14 @@
|
|
|
477
640
|
"default": 0,
|
|
478
641
|
"title": "Landed Prefix Len",
|
|
479
642
|
"type": "integer"
|
|
643
|
+
},
|
|
644
|
+
"planning_gate": {
|
|
645
|
+
"$ref": "#/$defs/PlanningGateOut",
|
|
646
|
+
"default": {
|
|
647
|
+
"node_id": null,
|
|
648
|
+
"ready": false,
|
|
649
|
+
"blockers": []
|
|
650
|
+
}
|
|
480
651
|
}
|
|
481
652
|
},
|
|
482
653
|
"required": [
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$defs": {
|
|
3
3
|
"LandPrOut": {
|
|
4
4
|
"additionalProperties": false,
|
|
5
|
-
"description": "The serialization boundary of
|
|
5
|
+
"description": "The serialization boundary of :class:`delivery.LandResult.PrSummary`\n(field order load-bearing).",
|
|
6
6
|
"properties": {
|
|
7
7
|
"number": {
|
|
8
8
|
"title": "Number",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
},
|
|
23
23
|
"LearnConsumeOut": {
|
|
24
24
|
"additionalProperties": false,
|
|
25
|
-
"description": "The serialization boundary of :class:`
|
|
25
|
+
"description": "The serialization boundary of :class:`delivery.LandResult.LearnUpdate`\n(field order load-bearing).",
|
|
26
26
|
"properties": {
|
|
27
27
|
"closed": {
|
|
28
28
|
"items": {
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"ObjectiveLandOut": {
|
|
54
54
|
"additionalProperties": false,
|
|
55
|
-
"description": "The serialization boundary of :class:`
|
|
55
|
+
"description": "The serialization boundary of :class:`delivery.LandResult.ObjectiveUpdate`\n(field order load-bearing).\n\n``id`` maps from the domain ``objective`` field (the linked objective id).",
|
|
56
56
|
"properties": {
|
|
57
57
|
"id": {
|
|
58
58
|
"anyOf": [
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"additionalProperties": false,
|
|
25
|
-
"description": "The ``--json`` serialization boundary of :class:`PrReadyResult` (order load-bearing).",
|
|
25
|
+
"description": "The ``--json`` serialization boundary of :class:`PrReadyResult` (order load-bearing \u2014\nthe nine continuation fields are tail-additive).\n\nNull semantics: dry-run \u2192 all nine continuation fields null; incremental \u2192\n``stacked=false``, rest null; stacked success \u2192 all populated (``reconcile_notice`` /\n``reconcile_retry`` are CLI-composed presentation: the ready-time reconcile pass was not\nlaunched \u2014 the worker never launches \u2014 plus the copyable re-run gesture; ``plan`` /\n``parent_checkpoint`` are the continuation evidence consumers compose the pinned diff\nrange from, contracts.md \u00a78.66).",
|
|
26
26
|
"properties": {
|
|
27
27
|
"success": {
|
|
28
28
|
"title": "Success",
|
|
@@ -60,6 +60,105 @@
|
|
|
60
60
|
"dry_run": {
|
|
61
61
|
"title": "Dry Run",
|
|
62
62
|
"type": "boolean"
|
|
63
|
+
},
|
|
64
|
+
"stacked": {
|
|
65
|
+
"anyOf": [
|
|
66
|
+
{
|
|
67
|
+
"type": "boolean"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"type": "null"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"title": "Stacked"
|
|
74
|
+
},
|
|
75
|
+
"objective": {
|
|
76
|
+
"anyOf": [
|
|
77
|
+
{
|
|
78
|
+
"type": "string"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"type": "null"
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"title": "Objective"
|
|
85
|
+
},
|
|
86
|
+
"node": {
|
|
87
|
+
"anyOf": [
|
|
88
|
+
{
|
|
89
|
+
"type": "string"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"type": "null"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"title": "Node"
|
|
96
|
+
},
|
|
97
|
+
"stamped_head": {
|
|
98
|
+
"anyOf": [
|
|
99
|
+
{
|
|
100
|
+
"type": "string"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"type": "null"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"title": "Stamped Head"
|
|
107
|
+
},
|
|
108
|
+
"stamp_advanced": {
|
|
109
|
+
"anyOf": [
|
|
110
|
+
{
|
|
111
|
+
"type": "boolean"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"type": "null"
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"title": "Stamp Advanced"
|
|
118
|
+
},
|
|
119
|
+
"reconcile_notice": {
|
|
120
|
+
"anyOf": [
|
|
121
|
+
{
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"type": "null"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"title": "Reconcile Notice"
|
|
129
|
+
},
|
|
130
|
+
"reconcile_retry": {
|
|
131
|
+
"anyOf": [
|
|
132
|
+
{
|
|
133
|
+
"type": "string"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "null"
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"title": "Reconcile Retry"
|
|
140
|
+
},
|
|
141
|
+
"plan": {
|
|
142
|
+
"anyOf": [
|
|
143
|
+
{
|
|
144
|
+
"type": "string"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"type": "null"
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"title": "Plan"
|
|
151
|
+
},
|
|
152
|
+
"parent_checkpoint": {
|
|
153
|
+
"anyOf": [
|
|
154
|
+
{
|
|
155
|
+
"type": "string"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"type": "null"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"title": "Parent Checkpoint"
|
|
63
162
|
}
|
|
64
163
|
},
|
|
65
164
|
"required": [
|
|
@@ -68,7 +167,16 @@
|
|
|
68
167
|
"message",
|
|
69
168
|
"pr",
|
|
70
169
|
"was_draft",
|
|
71
|
-
"dry_run"
|
|
170
|
+
"dry_run",
|
|
171
|
+
"stacked",
|
|
172
|
+
"objective",
|
|
173
|
+
"node",
|
|
174
|
+
"stamped_head",
|
|
175
|
+
"stamp_advanced",
|
|
176
|
+
"reconcile_notice",
|
|
177
|
+
"reconcile_retry",
|
|
178
|
+
"plan",
|
|
179
|
+
"parent_checkpoint"
|
|
72
180
|
],
|
|
73
181
|
"title": "PrReadyOut",
|
|
74
182
|
"type": "object"
|