Skip to content

Commit 1b57591

Browse files
svelderrainruizGitHub Copilot
andauthored
Update for standing priority #981 (#992)
* #981 Define human go/no-go decision contract * #981 Relax throughput-fork policy guard for #983 * #981 Address Copilot follow-up on #992 --------- Co-authored-by: GitHub Copilot <copilot@users.noreply.github.com>
1 parent a7d4231 commit 1b57591

6 files changed

Lines changed: 545 additions & 20 deletions

File tree

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Human Go/No-Go Decision Contract
2+
3+
Issue [#981](https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/issues/981)
4+
defines the contract slice for epic
5+
[#964](https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/issues/964).
6+
This page pins the future manual workflow inputs and the machine-readable output
7+
shape before the workflow itself is implemented.
8+
9+
## Intended Workflow Surface
10+
11+
- Workflow name: `Human Go/No-Go Feedback`
12+
- Workflow path: `.github/workflows/human-go-no-go-feedback.yml`
13+
- Trigger: `workflow_dispatch`
14+
15+
## Dispatch Inputs
16+
17+
Required inputs:
18+
19+
- `target_context`
20+
Short identifier for the work area under review.
21+
- `target_ref`
22+
Branch, ref, or comparable execution target.
23+
- `decision`
24+
Exact choice: `go` or `nogo`.
25+
- `feedback`
26+
Free-form human feedback that future agents can cite directly.
27+
28+
Optional inputs:
29+
30+
- `related_issue_url`
31+
Related issue URL when the decision is tied to a specific issue.
32+
- `related_pull_request_url`
33+
Related pull request URL when the decision is tied to a specific PR head.
34+
- `target_run_id`
35+
Workflow run id when the decision is tied to a specific run.
36+
- `evidence_url`
37+
Supporting artifact, run, or comment URL.
38+
- `recorded_by`
39+
Human or agent identity that triggered the workflow.
40+
- `transcribed_for`
41+
Human identity when an agent is transcribing another operator's decision.
42+
43+
## Output Contract
44+
45+
The workflow will later emit a machine-readable JSON payload that conforms to
46+
[../schemas/human-go-no-go-decision-v1.schema.json](../schemas/human-go-no-go-decision-v1.schema.json)
47+
with:
48+
49+
- schema id `human-go-no-go-decision@v1`
50+
- artifact name `human-go-no-go-decision`
51+
- primary report path `tests/results/_agent/handoff/human-go-no-go-decision.json`
52+
- optional event stream path
53+
`tests/results/_agent/handoff/human-go-no-go-events.ndjson`
54+
55+
The payload must capture:
56+
57+
- workflow identity
58+
- target repository, context, ref, and optional run id
59+
- decision value `go` or `nogo`
60+
- feedback text
61+
- recorder/transcription identity
62+
- linked run/evidence URLs
63+
- next-iteration recommendation and seed text
64+
65+
## Consumer Rule
66+
67+
Future-agent discovery and startup wiring is tracked separately by issue
68+
[#980](https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/issues/980).
69+
This contract only fixes the input/output shape and the durable report paths
70+
that later helpers must honor.
Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"$id": "https://labview-community-ci-cd.github.io/compare-vi-cli-action/schemas/human-go-no-go-decision-v1.schema.json",
4+
"title": "human-go-no-go-decision@v1",
5+
"type": "object",
6+
"additionalProperties": false,
7+
"required": [
8+
"schema",
9+
"schemaVersion",
10+
"generatedAt",
11+
"workflow",
12+
"target",
13+
"decision",
14+
"links",
15+
"artifacts",
16+
"nextIteration"
17+
],
18+
"properties": {
19+
"schema": {
20+
"const": "human-go-no-go-decision@v1"
21+
},
22+
"schemaVersion": {
23+
"type": "string"
24+
},
25+
"generatedAt": {
26+
"type": "string",
27+
"format": "date-time"
28+
},
29+
"workflow": {
30+
"$ref": "#/$defs/workflow"
31+
},
32+
"target": {
33+
"$ref": "#/$defs/target"
34+
},
35+
"decision": {
36+
"$ref": "#/$defs/decision"
37+
},
38+
"links": {
39+
"$ref": "#/$defs/links"
40+
},
41+
"artifacts": {
42+
"$ref": "#/$defs/artifacts"
43+
},
44+
"nextIteration": {
45+
"$ref": "#/$defs/nextIteration"
46+
}
47+
},
48+
"$defs": {
49+
"nullableString": {
50+
"type": [
51+
"string",
52+
"null"
53+
]
54+
},
55+
"nullableUri": {
56+
"type": [
57+
"string",
58+
"null"
59+
],
60+
"format": "uri"
61+
},
62+
"workflow": {
63+
"type": "object",
64+
"additionalProperties": false,
65+
"required": [
66+
"name",
67+
"path"
68+
],
69+
"properties": {
70+
"name": {
71+
"type": "string",
72+
"minLength": 1
73+
},
74+
"path": {
75+
"type": "string",
76+
"minLength": 1
77+
}
78+
}
79+
},
80+
"target": {
81+
"type": "object",
82+
"additionalProperties": false,
83+
"required": [
84+
"repository",
85+
"context",
86+
"ref",
87+
"runId",
88+
"issueUrl",
89+
"pullRequestUrl"
90+
],
91+
"properties": {
92+
"repository": {
93+
"type": "string",
94+
"minLength": 1
95+
},
96+
"context": {
97+
"type": "string",
98+
"minLength": 1
99+
},
100+
"ref": {
101+
"type": "string",
102+
"minLength": 1
103+
},
104+
"runId": {
105+
"$ref": "#/$defs/nullableString"
106+
},
107+
"issueUrl": {
108+
"$ref": "#/$defs/nullableUri"
109+
},
110+
"pullRequestUrl": {
111+
"$ref": "#/$defs/nullableUri"
112+
}
113+
}
114+
},
115+
"decision": {
116+
"type": "object",
117+
"additionalProperties": false,
118+
"required": [
119+
"value",
120+
"feedback",
121+
"recordedBy",
122+
"transcribedFor"
123+
],
124+
"properties": {
125+
"value": {
126+
"type": "string",
127+
"enum": [
128+
"go",
129+
"nogo"
130+
]
131+
},
132+
"feedback": {
133+
"type": "string",
134+
"minLength": 1
135+
},
136+
"recordedBy": {
137+
"$ref": "#/$defs/nullableString"
138+
},
139+
"transcribedFor": {
140+
"$ref": "#/$defs/nullableString"
141+
}
142+
}
143+
},
144+
"links": {
145+
"type": "object",
146+
"additionalProperties": false,
147+
"required": [
148+
"runUrl",
149+
"evidenceUrl"
150+
],
151+
"properties": {
152+
"runUrl": {
153+
"$ref": "#/$defs/nullableUri"
154+
},
155+
"evidenceUrl": {
156+
"$ref": "#/$defs/nullableUri"
157+
}
158+
}
159+
},
160+
"artifacts": {
161+
"type": "object",
162+
"additionalProperties": false,
163+
"required": [
164+
"artifactName",
165+
"decisionPath",
166+
"eventsPath"
167+
],
168+
"properties": {
169+
"artifactName": {
170+
"type": "string",
171+
"minLength": 1
172+
},
173+
"decisionPath": {
174+
"type": "string",
175+
"minLength": 1
176+
},
177+
"eventsPath": {
178+
"$ref": "#/$defs/nullableString"
179+
}
180+
}
181+
},
182+
"nextIteration": {
183+
"type": "object",
184+
"additionalProperties": false,
185+
"required": [
186+
"recommendedAction",
187+
"seed"
188+
],
189+
"properties": {
190+
"recommendedAction": {
191+
"type": "string",
192+
"enum": [
193+
"continue",
194+
"revise",
195+
"pause"
196+
]
197+
},
198+
"seed": {
199+
"$ref": "#/$defs/nullableString"
200+
}
201+
}
202+
}
203+
}
204+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"schema": "human-go-no-go-decision@v1",
3+
"schemaVersion": "1.0.0",
4+
"generatedAt": "2026-03-10T02:15:00.000Z",
5+
"workflow": {
6+
"name": "Human Go/No-Go Feedback",
7+
"path": ".github/workflows/human-go-no-go-feedback.yml"
8+
},
9+
"target": {
10+
"repository": "LabVIEW-Community-CI-CD/compare-vi-cli-action",
11+
"context": "issue/personal-981-go-no-go-contract",
12+
"ref": "issue/personal-981-go-no-go-contract",
13+
"runId": "22890012345",
14+
"issueUrl": "https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/issues/981",
15+
"pullRequestUrl": null
16+
},
17+
"decision": {
18+
"value": "nogo",
19+
"feedback": "Tighten latest-decision discovery before the next implementation pass.",
20+
"recordedBy": "svelderrainruiz",
21+
"transcribedFor": null
22+
},
23+
"links": {
24+
"runUrl": "https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/actions/runs/22890012345",
25+
"evidenceUrl": "https://github.com/LabVIEW-Community-CI-CD/compare-vi-cli-action/issues/964#issuecomment-1"
26+
},
27+
"artifacts": {
28+
"artifactName": "human-go-no-go-decision",
29+
"decisionPath": "tests/results/_agent/handoff/human-go-no-go-decision.json",
30+
"eventsPath": "tests/results/_agent/handoff/human-go-no-go-events.ndjson"
31+
},
32+
"nextIteration": {
33+
"recommendedAction": "revise",
34+
"seed": "Rework the contract so future helpers can resolve the latest decision without scraping comments."
35+
}
36+
}

0 commit comments

Comments
 (0)