@juangcarmona/lighthouse-sdlc 0.17.1 → 0.18.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/README.md +15 -3
- package/capabilities.json +2 -1
- package/epic-delivery.md +35 -0
- package/github-actions.md +19 -3
- package/host-contract.md +2 -0
- package/package.json +4 -1
- package/schemas/product-change.schema.json +23 -4
- package/schemas/stage-result.schema.json +23 -1
- package/skills/product-change/SKILL.md +3 -3
- package/skills/refine/SKILL.md +3 -2
- package/src/completion-actions.mjs +49 -12
- package/src/completion.mjs +1 -1
- package/src/contracts.mjs +10 -0
- package/src/decompose.mjs +5 -2
- package/src/epic-dispatch.mjs +59 -0
- package/src/epic-github.mjs +111 -0
- package/src/epic-journal.mjs +104 -0
- package/src/epic-merge.mjs +91 -0
- package/src/epic-native.mjs +465 -0
- package/src/epic.mjs +86 -0
- package/src/handoff.mjs +97 -0
- package/src/host-contract.mjs +22 -6
- package/src/implementation.mjs +33 -5
- package/src/install-workflows.mjs +1 -1
- package/src/issue-actions.mjs +360 -78
- package/src/opencode-execute.mjs +20 -0
- package/src/pr-state-actions.mjs +21 -7
- package/src/pr-state.mjs +18 -1
- package/src/product-change-actions.mjs +158 -46
- package/src/product-change.mjs +92 -11
- package/src/proposal-review.mjs +16 -6
- package/src/proposal.mjs +13 -1
- package/src/stacked.mjs +14 -3
- package/src/stage-dispatch.mjs +66 -19
- package/src/stage-transition.mjs +151 -2
- package/src/triage.mjs +4 -2
- package/src/unattended-actions.mjs +39 -12
- package/src/unattended.mjs +1 -1
- package/src/worker-maintenance.mjs +15 -3
- package/src/worker-recovery.mjs +204 -6
- package/workflows/lighthouse-sdlc-apply-product-change.lock.yml +97 -11
- package/workflows/lighthouse-sdlc-apply-product-change.md +75 -6
- package/workflows/lighthouse-sdlc-apply-review.lock.yml +33 -2
- package/workflows/lighthouse-sdlc-apply-review.md +29 -1
- package/workflows/lighthouse-sdlc-epic.yml +79 -0
- package/workflows/lighthouse-sdlc-implement.lock.yml +38 -2
- package/workflows/lighthouse-sdlc-implement.md +33 -2
- package/workflows/lighthouse-sdlc-integrate.lock.yml +4 -1
- package/workflows/lighthouse-sdlc-integrate.md +3 -0
- package/workflows/lighthouse-sdlc-product-change.lock.yml +39 -4
- package/workflows/lighthouse-sdlc-product-change.md +39 -6
- package/workflows/lighthouse-sdlc-propose.lock.yml +13 -1
- package/workflows/lighthouse-sdlc-propose.md +11 -1
- package/workflows/lighthouse-sdlc-refine.lock.yml +29 -2
- package/workflows/lighthouse-sdlc-refine.md +25 -2
- package/workflows/lighthouse-sdlc-review.lock.yml +4 -1
- package/workflows/lighthouse-sdlc-review.md +3 -0
- package/workflows/lighthouse-sdlc-router.yml +47 -3
- package/workflows/lighthouse-sdlc-triage.lock.yml +30 -3
- package/workflows/lighthouse-sdlc-triage.md +26 -3
- package/workflows/lighthouse-worker-maintenance.yml +70 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
# Owned by lighthouse-sdlc. Regenerate the lock with gh aw v0.93.2.
|
|
3
3
|
name: product-change
|
|
4
|
-
description: Prepare and publish an authenticated Product Change candidate for an
|
|
4
|
+
description: Prepare and publish an authenticated Product Change candidate for an idea or issue prerequisite.
|
|
5
5
|
run-name: "product change #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
6
6
|
concurrency:
|
|
7
7
|
group: lighthouse-issue-${{ inputs.issue }}
|
|
@@ -73,6 +73,11 @@ steps:
|
|
|
73
73
|
with:
|
|
74
74
|
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
75
75
|
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
76
|
+
- name: Load ProductShape inspection evidence
|
|
77
|
+
uses: actions/download-artifact@v8
|
|
78
|
+
with:
|
|
79
|
+
name: lighthouse-product-evidence-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
80
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/product-evidence
|
|
76
81
|
post-steps:
|
|
77
82
|
- name: Validate the Lighthouse result
|
|
78
83
|
run: node .lighthouse-harness/src/packages/sdlc/src/issue-actions.mjs validate
|
|
@@ -97,6 +102,7 @@ jobs:
|
|
|
97
102
|
actions: read
|
|
98
103
|
contents: read
|
|
99
104
|
issues: write
|
|
105
|
+
pull-requests: read
|
|
100
106
|
env:
|
|
101
107
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
102
108
|
LIGHTHOUSE_PRODUCT_CHANGE_ENABLED: "true"
|
|
@@ -106,6 +112,12 @@ jobs:
|
|
|
106
112
|
repository: juangcarmona/lighthouse
|
|
107
113
|
ref: __LIGHTHOUSE_REF__
|
|
108
114
|
persist-credentials: false
|
|
115
|
+
- name: Check out the adopter's current product source
|
|
116
|
+
uses: actions/checkout@v5
|
|
117
|
+
with:
|
|
118
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
119
|
+
path: .lighthouse-product-source
|
|
120
|
+
persist-credentials: false
|
|
109
121
|
- uses: actions/setup-node@v5
|
|
110
122
|
with:
|
|
111
123
|
node-version: 24
|
|
@@ -117,26 +129,42 @@ jobs:
|
|
|
117
129
|
id: prepare
|
|
118
130
|
env:
|
|
119
131
|
GH_TOKEN: ${{ github.token }}
|
|
120
|
-
|
|
132
|
+
working-directory: .lighthouse-product-source
|
|
133
|
+
run: node "$GITHUB_WORKSPACE/src/packages/sdlc/src/issue-actions.mjs" prepare
|
|
121
134
|
- name: Preserve the execution request
|
|
122
135
|
if: steps.prepare.outputs.eligible == 'true'
|
|
123
136
|
uses: actions/upload-artifact@v7
|
|
124
137
|
with:
|
|
125
138
|
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
126
|
-
path:
|
|
139
|
+
path: |
|
|
140
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/admission.json
|
|
141
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/request.json
|
|
142
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/issue.json
|
|
143
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/context.json
|
|
144
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/reserved
|
|
145
|
+
if-no-files-found: error
|
|
146
|
+
retention-days: 14
|
|
147
|
+
- name: Preserve ProductShape inspection evidence
|
|
148
|
+
if: steps.prepare.outputs.eligible == 'true'
|
|
149
|
+
uses: actions/upload-artifact@v7
|
|
150
|
+
with:
|
|
151
|
+
name: lighthouse-product-evidence-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
152
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/product-evidence/
|
|
127
153
|
if-no-files-found: error
|
|
128
154
|
retention-days: 14
|
|
129
155
|
- name: Release reservation if preparation failed
|
|
130
156
|
if: failure()
|
|
131
157
|
env:
|
|
132
158
|
GH_TOKEN: ${{ github.token }}
|
|
159
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
133
160
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
134
161
|
publish:
|
|
135
162
|
name: Validate and publish the product candidate
|
|
136
|
-
needs: [prepare, agent]
|
|
163
|
+
needs: [prepare, pre_activation, activation, agent]
|
|
137
164
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
138
165
|
runs-on: ubuntu-24.04
|
|
139
166
|
permissions:
|
|
167
|
+
actions: read
|
|
140
168
|
contents: write
|
|
141
169
|
issues: write
|
|
142
170
|
pull-requests: write
|
|
@@ -157,6 +185,7 @@ jobs:
|
|
|
157
185
|
with:
|
|
158
186
|
node-version: 24
|
|
159
187
|
- name: Install the repository and optional product provider
|
|
188
|
+
working-directory: .lighthouse-harness
|
|
160
189
|
run: |
|
|
161
190
|
npm ci --ignore-scripts
|
|
162
191
|
npm install --no-save --package-lock=false --ignore-scripts @prodshape/integration-openspec@0.6.6
|
|
@@ -183,6 +212,10 @@ jobs:
|
|
|
183
212
|
if: always()
|
|
184
213
|
env:
|
|
185
214
|
GH_TOKEN: ${{ github.token }}
|
|
215
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
216
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
217
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
218
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
186
219
|
run: node .lighthouse-harness/src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
187
220
|
---
|
|
188
221
|
|
|
@@ -190,6 +223,6 @@ jobs:
|
|
|
190
223
|
|
|
191
224
|
Read the authenticated context and follow `/harness/skills/product-change/SKILL.md`. Use the installed ProductShape schema instructions included in `context.productChange`. The issue title and body define the idea and the host's `context.productChange.parent` defines the scope and authorization. Compare it with the accepted product model, then return one of `aligned`, `candidate` or `blocked` in `result.output.productChange`.
|
|
192
225
|
|
|
193
|
-
For a candidate, return the complete provider-owned change files under `context.productChange.root`, the host-assigned `changeName`, CHG ID,
|
|
226
|
+
For a candidate, return the complete provider-owned change files under `context.productChange.root`, the host-assigned `changeName`, CHG ID, baseline digest and pending provider validation. Copy `context.productChange.schemaPin` into `.openspec.yaml` and omit the proposal digest; the host calculates it after validation. Keep the manifest in draft status. Do not approve, apply, alter the accepted model, publish a branch or continue implementation. The trusted publisher rechecks the exact candidate, validates it against the current accepted model, publishes the PR and requests an explicit product decision. Product approval, apply, implementation, merge and release are separate effects.
|
|
194
227
|
|
|
195
|
-
Return the supplied stage result identity and
|
|
228
|
+
Return the supplied stage result identity and retain its enclosing lifecycle stage. An idea or parent prerequisite grants no new implementation authority. The host owns all GitHub effects and releases execution resources when the decision request is durable.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"
|
|
1
|
+
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e2cc0df8da555f8f423902c0c5a3b1610f56f3923a51c02b1821231b20e86a66","body_hash":"837f36195c7a0bf8859d78018be1060568e04a8743c44b1f3fd89c7344bc4752","compiler_version":"v0.93.2","agent_id":"opencode","engine_versions":{"opencode":"2.1.0"},"agent_image_runner":"[\"self-hosted\",\"linux\",\"lighthouse-workflow\"]"}
|
|
2
2
|
# gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/checkout","sha":"fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09","version":"v5"},{"repo":"actions/download-artifact","sha":"9000827ccba6bdab643e8b6fd33ac0654aef8333","version":"v8.0.2"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"949feb2413d6458794dcd2491c4babbbce0c15c1","version":"v7.1.0"},{"repo":"actions/setup-node","sha":"a0853c24544627f65ddf259abe73b1d18a591444","version":"v5"},{"repo":"actions/upload-artifact","sha":"cf430e030ddbb5b0abf93d22962f4752f3646cd9","version":"v7.0.2"},{"repo":"github/gh-aw-actions/setup","sha":"d9128eb3ea40c18b77c76184eda03c0ff2608d79","version":"v0.93.2"}],"containers":[{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382","pinned_image":"ghcr.io/github/gh-aw-node@sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382"}],"mcp_servers":[{"name":"safeoutputs","tools":["noop"]}],"threat_detection":{"mode":"disabled"},"admission":false}
|
|
3
3
|
# This file was automatically generated by gh-aw (v0.93.2). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
|
|
4
4
|
#
|
|
@@ -1263,16 +1263,20 @@ jobs:
|
|
|
1263
1263
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1264
1264
|
env:
|
|
1265
1265
|
GH_TOKEN: ${{ github.token }}
|
|
1266
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
1266
1267
|
|
|
1267
1268
|
publish:
|
|
1268
1269
|
name: Validate, publish and release
|
|
1269
1270
|
needs:
|
|
1271
|
+
- activation
|
|
1270
1272
|
- agent
|
|
1273
|
+
- pre_activation
|
|
1271
1274
|
- prepare
|
|
1272
1275
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
1273
1276
|
runs-on: ubuntu-24.04
|
|
1274
1277
|
# Permissions for the publish job (workflow permissions default to none).
|
|
1275
1278
|
permissions:
|
|
1279
|
+
actions: write
|
|
1276
1280
|
contents: write
|
|
1277
1281
|
issues: write
|
|
1278
1282
|
pull-requests: write
|
|
@@ -1322,3 +1326,11 @@ jobs:
|
|
|
1322
1326
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1323
1327
|
env:
|
|
1324
1328
|
GH_TOKEN: ${{ github.token }}
|
|
1329
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
1330
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
1331
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
1332
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
1333
|
+
- name: Request the verified product prerequisite
|
|
1334
|
+
run: node src/packages/sdlc/src/issue-actions.mjs continue-product-gap
|
|
1335
|
+
env:
|
|
1336
|
+
GH_TOKEN: ${{ github.token }}
|
|
@@ -136,13 +136,15 @@ jobs:
|
|
|
136
136
|
if: failure()
|
|
137
137
|
env:
|
|
138
138
|
GH_TOKEN: ${{ github.token }}
|
|
139
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
139
140
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
140
141
|
publish:
|
|
141
142
|
name: Validate, publish and release
|
|
142
|
-
needs: [prepare, agent]
|
|
143
|
+
needs: [prepare, pre_activation, activation, agent]
|
|
143
144
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
144
145
|
runs-on: ubuntu-24.04
|
|
145
146
|
permissions:
|
|
147
|
+
actions: write
|
|
146
148
|
contents: write
|
|
147
149
|
issues: write
|
|
148
150
|
pull-requests: write
|
|
@@ -182,7 +184,15 @@ jobs:
|
|
|
182
184
|
if: always()
|
|
183
185
|
env:
|
|
184
186
|
GH_TOKEN: ${{ github.token }}
|
|
187
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
188
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
189
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
190
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
185
191
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
192
|
+
- name: Request the verified product prerequisite
|
|
193
|
+
env:
|
|
194
|
+
GH_TOKEN: ${{ github.token }}
|
|
195
|
+
run: node src/packages/sdlc/src/issue-actions.mjs continue-product-gap
|
|
186
196
|
---
|
|
187
197
|
|
|
188
198
|
# Propose the authorized change
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"
|
|
1
|
+
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"75a6e72b471b0702be6cca0331d37ac405d8fa53e8dd552e50b1f6493da4ca7e","body_hash":"00aaac0798637a281758028c249e7c1086c7ca9e32ea9cb2ef51af769c3e2586","compiler_version":"v0.93.2","agent_id":"opencode","engine_versions":{"opencode":"2.1.0"},"agent_image_runner":"[\"self-hosted\",\"linux\",\"lighthouse-workflow\"]"}
|
|
2
2
|
# gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/checkout","sha":"fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09","version":"v5"},{"repo":"actions/download-artifact","sha":"9000827ccba6bdab643e8b6fd33ac0654aef8333","version":"v8.0.2"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"949feb2413d6458794dcd2491c4babbbce0c15c1","version":"v7.1.0"},{"repo":"actions/setup-node","sha":"a0853c24544627f65ddf259abe73b1d18a591444","version":"v5"},{"repo":"actions/upload-artifact","sha":"cf430e030ddbb5b0abf93d22962f4752f3646cd9","version":"v7.0.2"},{"repo":"github/gh-aw-actions/setup","sha":"d9128eb3ea40c18b77c76184eda03c0ff2608d79","version":"v0.93.2"}],"containers":[{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382","pinned_image":"ghcr.io/github/gh-aw-node@sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382"}],"mcp_servers":[{"name":"safeoutputs","tools":["noop"]}],"threat_detection":{"mode":"disabled"},"admission":false}
|
|
3
3
|
# This file was automatically generated by gh-aw (v0.93.2). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
|
|
4
4
|
#
|
|
@@ -69,6 +69,10 @@ on:
|
|
|
69
69
|
description: Authenticated router receipt comment ID
|
|
70
70
|
required: true
|
|
71
71
|
type: string
|
|
72
|
+
epic-parent:
|
|
73
|
+
description: Authenticated parent issue for shared epic serialization
|
|
74
|
+
required: false
|
|
75
|
+
type: string
|
|
72
76
|
issue:
|
|
73
77
|
description: Source issue
|
|
74
78
|
required: true
|
|
@@ -79,7 +83,7 @@ permissions: {}
|
|
|
79
83
|
|
|
80
84
|
concurrency:
|
|
81
85
|
cancel-in-progress: false
|
|
82
|
-
group: lighthouse-issue
|
|
86
|
+
group: ${{ inputs.epic-parent && format('lighthouse-epic-child-{0}', inputs.issue) || format('lighthouse-issue-{0}', inputs.issue) }}
|
|
83
87
|
queue: max
|
|
84
88
|
|
|
85
89
|
run-name: "refine #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
@@ -1221,6 +1225,12 @@ jobs:
|
|
|
1221
1225
|
actions: read
|
|
1222
1226
|
contents: read
|
|
1223
1227
|
issues: write
|
|
1228
|
+
pull-requests: read
|
|
1229
|
+
concurrency:
|
|
1230
|
+
cancel-in-progress: false
|
|
1231
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-prepare-{0}', github.run_id) }}
|
|
1232
|
+
queue: max
|
|
1233
|
+
|
|
1224
1234
|
env:
|
|
1225
1235
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
1226
1236
|
outputs:
|
|
@@ -1262,11 +1272,14 @@ jobs:
|
|
|
1262
1272
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1263
1273
|
env:
|
|
1264
1274
|
GH_TOKEN: ${{ github.token }}
|
|
1275
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
1265
1276
|
|
|
1266
1277
|
publish:
|
|
1267
1278
|
name: Validate, publish and release
|
|
1268
1279
|
needs:
|
|
1280
|
+
- activation
|
|
1269
1281
|
- agent
|
|
1282
|
+
- pre_activation
|
|
1270
1283
|
- prepare
|
|
1271
1284
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
1272
1285
|
runs-on: ubuntu-24.04
|
|
@@ -1275,6 +1288,12 @@ jobs:
|
|
|
1275
1288
|
actions: write
|
|
1276
1289
|
contents: read
|
|
1277
1290
|
issues: write
|
|
1291
|
+
pull-requests: read
|
|
1292
|
+
concurrency:
|
|
1293
|
+
cancel-in-progress: false
|
|
1294
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-publish-{0}', github.run_id) }}
|
|
1295
|
+
queue: max
|
|
1296
|
+
|
|
1278
1297
|
env:
|
|
1279
1298
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
1280
1299
|
steps:
|
|
@@ -1322,7 +1341,15 @@ jobs:
|
|
|
1322
1341
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1323
1342
|
env:
|
|
1324
1343
|
GH_TOKEN: ${{ github.token }}
|
|
1344
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
1345
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
1346
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
1347
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
1325
1348
|
- name: Request the verified implementation continuation
|
|
1326
1349
|
run: node src/packages/sdlc/src/issue-actions.mjs continue-refinement
|
|
1327
1350
|
env:
|
|
1328
1351
|
GH_TOKEN: ${{ github.token }}
|
|
1352
|
+
- name: Request the verified product prerequisite
|
|
1353
|
+
run: node src/packages/sdlc/src/issue-actions.mjs continue-product-gap
|
|
1354
|
+
env:
|
|
1355
|
+
GH_TOKEN: ${{ github.token }}
|
|
@@ -4,7 +4,7 @@ name: refine
|
|
|
4
4
|
description: Refine an authorized issue through OpenCode with execution logs and validated evidence.
|
|
5
5
|
run-name: "refine #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
6
6
|
concurrency:
|
|
7
|
-
group: lighthouse-issue
|
|
7
|
+
group: ${{ inputs.epic-parent && format('lighthouse-epic-child-{0}', inputs.issue) || format('lighthouse-issue-{0}', inputs.issue) }}
|
|
8
8
|
cancel-in-progress: false
|
|
9
9
|
queue: max
|
|
10
10
|
job-discriminator: ${{ github.run_id }}
|
|
@@ -21,6 +21,10 @@ on:
|
|
|
21
21
|
description: Authenticated router receipt comment ID
|
|
22
22
|
required: true
|
|
23
23
|
type: string
|
|
24
|
+
epic-parent:
|
|
25
|
+
description: Authenticated parent issue for shared epic serialization
|
|
26
|
+
required: false
|
|
27
|
+
type: string
|
|
24
28
|
needs: [prepare]
|
|
25
29
|
if: needs.prepare.outputs.eligible == 'true'
|
|
26
30
|
runs-on: [self-hosted, linux, lighthouse-workflow]
|
|
@@ -98,6 +102,10 @@ post-steps:
|
|
|
98
102
|
retention-days: 14
|
|
99
103
|
jobs:
|
|
100
104
|
prepare:
|
|
105
|
+
concurrency:
|
|
106
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-prepare-{0}', github.run_id) }}
|
|
107
|
+
cancel-in-progress: false
|
|
108
|
+
queue: max
|
|
101
109
|
outputs:
|
|
102
110
|
eligible: ${{ steps.prepare.outputs.eligible }}
|
|
103
111
|
source_revision: ${{ steps.prepare.outputs.source_revision }}
|
|
@@ -107,6 +115,7 @@ jobs:
|
|
|
107
115
|
actions: read
|
|
108
116
|
contents: read
|
|
109
117
|
issues: write
|
|
118
|
+
pull-requests: read
|
|
110
119
|
env:
|
|
111
120
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
112
121
|
steps:
|
|
@@ -135,16 +144,22 @@ jobs:
|
|
|
135
144
|
if: failure()
|
|
136
145
|
env:
|
|
137
146
|
GH_TOKEN: ${{ github.token }}
|
|
147
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
138
148
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
139
149
|
publish:
|
|
150
|
+
concurrency:
|
|
151
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-publish-{0}', github.run_id) }}
|
|
152
|
+
cancel-in-progress: false
|
|
153
|
+
queue: max
|
|
140
154
|
name: Validate, publish and release
|
|
141
|
-
needs: [prepare, agent]
|
|
155
|
+
needs: [prepare, pre_activation, activation, agent]
|
|
142
156
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
143
157
|
runs-on: ubuntu-24.04
|
|
144
158
|
permissions:
|
|
145
159
|
actions: write
|
|
146
160
|
contents: read
|
|
147
161
|
issues: write
|
|
162
|
+
pull-requests: read
|
|
148
163
|
env:
|
|
149
164
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
150
165
|
steps:
|
|
@@ -182,11 +197,19 @@ jobs:
|
|
|
182
197
|
if: always()
|
|
183
198
|
env:
|
|
184
199
|
GH_TOKEN: ${{ github.token }}
|
|
200
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
201
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
202
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
203
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
185
204
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
186
205
|
- name: Request the verified implementation continuation
|
|
187
206
|
env:
|
|
188
207
|
GH_TOKEN: ${{ github.token }}
|
|
189
208
|
run: node src/packages/sdlc/src/issue-actions.mjs continue-refinement
|
|
209
|
+
- name: Request the verified product prerequisite
|
|
210
|
+
env:
|
|
211
|
+
GH_TOKEN: ${{ github.token }}
|
|
212
|
+
run: node src/packages/sdlc/src/issue-actions.mjs continue-product-gap
|
|
190
213
|
---
|
|
191
214
|
|
|
192
215
|
# Refine the authorized issue
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"
|
|
1
|
+
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"d4a17ac1ac76bdf5b1e27cc7b63dc889d70b7d4521e0cfa9a8d4a126031ab10f","body_hash":"13d2a6e093a7dc59f842bf0e8e8ea2a1c5a2879c8608b026dac1197b022baebe","compiler_version":"v0.93.2","agent_id":"opencode","engine_versions":{"opencode":"2.1.0"},"agent_image_runner":"[\"self-hosted\",\"linux\",\"lighthouse-workflow\"]"}
|
|
2
2
|
# gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/checkout","sha":"fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09","version":"v5"},{"repo":"actions/download-artifact","sha":"9000827ccba6bdab643e8b6fd33ac0654aef8333","version":"v8.0.2"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"949feb2413d6458794dcd2491c4babbbce0c15c1","version":"v7.1.0"},{"repo":"actions/setup-node","sha":"a0853c24544627f65ddf259abe73b1d18a591444","version":"v5"},{"repo":"actions/upload-artifact","sha":"cf430e030ddbb5b0abf93d22962f4752f3646cd9","version":"v7.0.2"},{"repo":"github/gh-aw-actions/setup","sha":"d9128eb3ea40c18b77c76184eda03c0ff2608d79","version":"v0.93.2"}],"containers":[{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382","pinned_image":"ghcr.io/github/gh-aw-node@sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382"}],"mcp_servers":[{"name":"safeoutputs","tools":["noop"]}],"threat_detection":{"mode":"disabled"},"admission":false}
|
|
3
3
|
# This file was automatically generated by gh-aw (v0.93.2). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
|
|
4
4
|
#
|
|
@@ -1264,6 +1264,7 @@ jobs:
|
|
|
1264
1264
|
run: node src/packages/sdlc/src/completion-actions.mjs cleanup
|
|
1265
1265
|
env:
|
|
1266
1266
|
GH_TOKEN: ${{ github.token }}
|
|
1267
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
1267
1268
|
|
|
1268
1269
|
publish:
|
|
1269
1270
|
name: Validate, publish and release
|
|
@@ -1339,3 +1340,5 @@ jobs:
|
|
|
1339
1340
|
run: node src/packages/sdlc/src/completion-actions.mjs cleanup
|
|
1340
1341
|
env:
|
|
1341
1342
|
GH_TOKEN: ${{ github.token }}
|
|
1343
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
1344
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
@@ -137,6 +137,7 @@ jobs:
|
|
|
137
137
|
if: failure()
|
|
138
138
|
env:
|
|
139
139
|
GH_TOKEN: ${{ github.token }}
|
|
140
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
140
141
|
run: node src/packages/sdlc/src/completion-actions.mjs cleanup
|
|
141
142
|
publish:
|
|
142
143
|
concurrency:
|
|
@@ -198,6 +199,8 @@ jobs:
|
|
|
198
199
|
if: always()
|
|
199
200
|
env:
|
|
200
201
|
GH_TOKEN: ${{ github.token }}
|
|
202
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
203
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
201
204
|
run: node src/packages/sdlc/src/completion-actions.mjs cleanup
|
|
202
205
|
---
|
|
203
206
|
|
|
@@ -34,7 +34,7 @@ on:
|
|
|
34
34
|
required: true
|
|
35
35
|
default: stage
|
|
36
36
|
type: choice
|
|
37
|
-
options: [stage, product-change]
|
|
37
|
+
options: [stage, product-change, resume-product]
|
|
38
38
|
model_selection:
|
|
39
39
|
description: Optional JSON model selection for this execution
|
|
40
40
|
required: false
|
|
@@ -43,6 +43,14 @@ on:
|
|
|
43
43
|
description: Recheck a completed execution through the same continuation rules
|
|
44
44
|
required: false
|
|
45
45
|
type: string
|
|
46
|
+
epic_parent:
|
|
47
|
+
description: Authenticated parent issue for epic triage
|
|
48
|
+
required: false
|
|
49
|
+
type: string
|
|
50
|
+
epic_run:
|
|
51
|
+
description: Completed epic execution for child triage
|
|
52
|
+
required: false
|
|
53
|
+
type: string
|
|
46
54
|
pull_request:
|
|
47
55
|
description: PR number for integrate or review
|
|
48
56
|
required: false
|
|
@@ -92,14 +100,45 @@ jobs:
|
|
|
92
100
|
env:
|
|
93
101
|
GH_TOKEN: ${{ github.token }}
|
|
94
102
|
run: node src/packages/sdlc/src/pr-state-actions.mjs
|
|
103
|
+
epic-triage:
|
|
104
|
+
if: >-
|
|
105
|
+
vars.LIGHTHOUSE_AUTOMATION_ENABLED == 'true' && vars.LIGHTHOUSE_EPIC_ENABLED == 'true' &&
|
|
106
|
+
github.event_name == 'workflow_run' && github.event.action == 'completed' &&
|
|
107
|
+
github.event.workflow_run.path == '.github/workflows/lighthouse-sdlc-epic.yml' && github.event.workflow_run.conclusion == 'success'
|
|
108
|
+
concurrency:
|
|
109
|
+
group: lighthouse-epic-triage-${{ github.event.workflow_run.id }}
|
|
110
|
+
cancel-in-progress: false
|
|
111
|
+
queue: max
|
|
112
|
+
runs-on: ubuntu-24.04
|
|
113
|
+
permissions:
|
|
114
|
+
actions: write
|
|
115
|
+
contents: read
|
|
116
|
+
issues: read
|
|
117
|
+
steps:
|
|
118
|
+
- uses: actions/checkout@v5
|
|
119
|
+
with:
|
|
120
|
+
repository: juangcarmona/lighthouse
|
|
121
|
+
ref: __LIGHTHOUSE_REF__
|
|
122
|
+
persist-credentials: false
|
|
123
|
+
- uses: actions/setup-node@v5
|
|
124
|
+
with:
|
|
125
|
+
node-version: 24
|
|
126
|
+
- name: Dispatch authenticated epic child triage
|
|
127
|
+
env:
|
|
128
|
+
GH_TOKEN: ${{ github.token }}
|
|
129
|
+
run: node src/packages/sdlc/src/epic-dispatch.mjs
|
|
95
130
|
route:
|
|
96
131
|
if: >-
|
|
97
132
|
vars.LIGHTHOUSE_AUTOMATION_ENABLED == 'true' &&
|
|
98
133
|
(github.actor == github.repository_owner || github.event_name == 'workflow_run' ||
|
|
99
|
-
(github.event_name == 'workflow_dispatch' && github.actor == 'github-actions[bot]' && inputs.stage == 'implement' && inputs.
|
|
134
|
+
(github.event_name == 'workflow_dispatch' && github.actor == 'github-actions[bot]' && ((inputs.after_run != '' && ((inputs.stage == 'implement' && inputs.workflow != 'product-change') || inputs.workflow == 'product-change' || inputs.workflow == 'resume-product')) || (inputs.stage == 'triage' && inputs.epic_parent != '' && inputs.epic_run != '')))) &&
|
|
100
135
|
(github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_run' ||
|
|
101
136
|
(github.event_name == 'issues' && (github.event.label.name == 'triage' || github.event.label.name == 'refine' || github.event.label.name == 'propose' || github.event.label.name == 'implement' || (github.event.action == 'unlabeled' && github.event.label.name == 'future'))) ||
|
|
102
137
|
github.event_name == 'issue_comment' || github.event_name == 'pull_request_review' || github.event_name == 'pull_request_review_comment')
|
|
138
|
+
concurrency:
|
|
139
|
+
group: lighthouse-route-${{ github.event_name }}-${{ github.event.comment.id || github.event.review.id || github.run_id }}
|
|
140
|
+
cancel-in-progress: false
|
|
141
|
+
queue: max
|
|
103
142
|
runs-on: ubuntu-24.04
|
|
104
143
|
permissions:
|
|
105
144
|
actions: read
|
|
@@ -109,6 +148,7 @@ jobs:
|
|
|
109
148
|
outputs:
|
|
110
149
|
run: ${{ steps.route.outputs.run }}
|
|
111
150
|
issue: ${{ steps.route.outputs.issue }}
|
|
151
|
+
epic_parent: ${{ steps.route.outputs.epic_parent }}
|
|
112
152
|
stage: ${{ steps.route.outputs.stage }}
|
|
113
153
|
worker: ${{ steps.route.outputs.worker }}
|
|
114
154
|
steps:
|
|
@@ -125,6 +165,7 @@ jobs:
|
|
|
125
165
|
env:
|
|
126
166
|
GH_TOKEN: ${{ github.token }}
|
|
127
167
|
LIGHTHOUSE_COMPLETION_ENABLED: true
|
|
168
|
+
LIGHTHOUSE_EPIC_ENABLED: ${{ vars.LIGHTHOUSE_EPIC_ENABLED }}
|
|
128
169
|
LIGHTHOUSE_PRODUCT_CHANGE_ENABLED: ${{ env.LIGHTHOUSE_PRODUCT_CHANGE_ENABLED }}
|
|
129
170
|
run: node src/packages/sdlc/src/issue-actions.mjs route
|
|
130
171
|
dispatch:
|
|
@@ -132,7 +173,7 @@ jobs:
|
|
|
132
173
|
needs: route
|
|
133
174
|
if: needs.route.outputs.run == 'true'
|
|
134
175
|
concurrency:
|
|
135
|
-
group: lighthouse-
|
|
176
|
+
group: lighthouse-issue-${{ needs.route.outputs.epic_parent || needs.route.outputs.issue }}
|
|
136
177
|
cancel-in-progress: false
|
|
137
178
|
queue: max
|
|
138
179
|
runs-on: ubuntu-24.04
|
|
@@ -143,6 +184,9 @@ jobs:
|
|
|
143
184
|
pull-requests: read
|
|
144
185
|
env:
|
|
145
186
|
LIGHTHOUSE_ISSUE: ${{ needs.route.outputs.issue }}
|
|
187
|
+
LIGHTHOUSE_EPIC_PARENT: ${{ needs.route.outputs.epic_parent }}
|
|
188
|
+
LIGHTHOUSE_EPIC_ENABLED: ${{ vars.LIGHTHOUSE_EPIC_ENABLED }}
|
|
189
|
+
LIGHTHOUSE_EPIC_CAPACITY: ${{ vars.LIGHTHOUSE_EPIC_CAPACITY }}
|
|
146
190
|
LIGHTHOUSE_STAGE: ${{ needs.route.outputs.stage }}
|
|
147
191
|
LIGHTHOUSE_WORKER: ${{ needs.route.outputs.worker }}
|
|
148
192
|
steps:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"
|
|
1
|
+
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"00b2d57d1b7519c4eeb8f10176673c2f626856b7050d2c6f41377d67866ba7b0","body_hash":"b6819b09222b408b8140fdc320e7270d45149ccb70442e528ef4f0ffa86e985c","compiler_version":"v0.93.2","agent_id":"opencode","engine_versions":{"opencode":"2.1.0"},"agent_image_runner":"[\"self-hosted\",\"linux\",\"lighthouse-workflow\"]"}
|
|
2
2
|
# gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_DEFAULT_OTLP_ENDPOINT","GH_AW_DEFAULT_OTLP_HEADERS","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/checkout","sha":"3d3c42e5aac5ba805825da76410c181273ba90b1","version":"v7.0.1"},{"repo":"actions/checkout","sha":"fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09","version":"v5"},{"repo":"actions/download-artifact","sha":"9000827ccba6bdab643e8b6fd33ac0654aef8333","version":"v8.0.2"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"949feb2413d6458794dcd2491c4babbbce0c15c1","version":"v7.1.0"},{"repo":"actions/setup-node","sha":"a0853c24544627f65ddf259abe73b1d18a591444","version":"v5"},{"repo":"actions/upload-artifact","sha":"cf430e030ddbb5b0abf93d22962f4752f3646cd9","version":"v7.0.2"},{"repo":"github/gh-aw-actions/setup","sha":"d9128eb3ea40c18b77c76184eda03c0ff2608d79","version":"v0.93.2"}],"containers":[{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382","pinned_image":"ghcr.io/github/gh-aw-node@sha256:41835613992df88f51e923bad486f96dfb2e6cda29f13e217df41833284ae382"}],"mcp_servers":[{"name":"safeoutputs","tools":["noop"]}],"threat_detection":{"mode":"disabled"},"admission":false}
|
|
3
3
|
# This file was automatically generated by gh-aw (v0.93.2). DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
|
|
4
4
|
#
|
|
@@ -69,6 +69,10 @@ on:
|
|
|
69
69
|
description: Authenticated owner admission receipt
|
|
70
70
|
required: true
|
|
71
71
|
type: string
|
|
72
|
+
epic-parent:
|
|
73
|
+
description: Authenticated parent issue for shared epic serialization
|
|
74
|
+
required: false
|
|
75
|
+
type: string
|
|
72
76
|
issue:
|
|
73
77
|
description: Source issue
|
|
74
78
|
required: true
|
|
@@ -79,7 +83,7 @@ permissions: {}
|
|
|
79
83
|
|
|
80
84
|
concurrency:
|
|
81
85
|
cancel-in-progress: false
|
|
82
|
-
group: lighthouse-issue
|
|
86
|
+
group: ${{ inputs.epic-parent && format('lighthouse-epic-child-{0}', inputs.issue) || format('lighthouse-issue-{0}', inputs.issue) }}
|
|
83
87
|
queue: max
|
|
84
88
|
|
|
85
89
|
run-name: "triage #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
@@ -1221,6 +1225,12 @@ jobs:
|
|
|
1221
1225
|
actions: read
|
|
1222
1226
|
contents: read
|
|
1223
1227
|
issues: write
|
|
1228
|
+
pull-requests: read
|
|
1229
|
+
concurrency:
|
|
1230
|
+
cancel-in-progress: false
|
|
1231
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-prepare-{0}', github.run_id) }}
|
|
1232
|
+
queue: max
|
|
1233
|
+
|
|
1224
1234
|
env:
|
|
1225
1235
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
1226
1236
|
outputs:
|
|
@@ -1262,19 +1272,28 @@ jobs:
|
|
|
1262
1272
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1263
1273
|
env:
|
|
1264
1274
|
GH_TOKEN: ${{ github.token }}
|
|
1275
|
+
LIGHTHOUSE_PREPARE_FAILED: "true"
|
|
1265
1276
|
|
|
1266
1277
|
publish:
|
|
1267
1278
|
name: Validate, publish and release
|
|
1268
1279
|
needs:
|
|
1280
|
+
- activation
|
|
1269
1281
|
- agent
|
|
1282
|
+
- pre_activation
|
|
1270
1283
|
- prepare
|
|
1271
1284
|
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
1272
1285
|
runs-on: ubuntu-24.04
|
|
1273
1286
|
# Permissions for the publish job (workflow permissions default to none).
|
|
1274
1287
|
permissions:
|
|
1275
|
-
actions:
|
|
1288
|
+
actions: write
|
|
1276
1289
|
contents: read
|
|
1277
1290
|
issues: write
|
|
1291
|
+
pull-requests: read
|
|
1292
|
+
concurrency:
|
|
1293
|
+
cancel-in-progress: false
|
|
1294
|
+
group: ${{ inputs.epic-parent && format('lighthouse-issue-{0}', inputs.epic-parent) || format('lighthouse-publish-{0}', github.run_id) }}
|
|
1295
|
+
queue: max
|
|
1296
|
+
|
|
1278
1297
|
env:
|
|
1279
1298
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
1280
1299
|
steps:
|
|
@@ -1319,3 +1338,11 @@ jobs:
|
|
|
1319
1338
|
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
1320
1339
|
env:
|
|
1321
1340
|
GH_TOKEN: ${{ github.token }}
|
|
1341
|
+
LIGHTHOUSE_ACTIVATION_RESULT: ${{ needs.activation.result }}
|
|
1342
|
+
LIGHTHOUSE_AGENT_RESULT: ${{ needs.agent.result }}
|
|
1343
|
+
LIGHTHOUSE_PRE_ACTIVATION_RESULT: ${{ needs.pre_activation.result }}
|
|
1344
|
+
LIGHTHOUSE_PUBLISH_STATUS: ${{ job.status }}
|
|
1345
|
+
- name: Request the verified product prerequisite
|
|
1346
|
+
run: node src/packages/sdlc/src/issue-actions.mjs continue-product-gap
|
|
1347
|
+
env:
|
|
1348
|
+
GH_TOKEN: ${{ github.token }}
|