@juangcarmona/lighthouse-sdlc 0.13.0 → 0.14.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 +61 -12
- package/completion.md +6 -4
- package/execution-environments.md +43 -0
- package/package.json +2 -1
- package/schemas/execution-environment.schema.json +12 -0
- package/skills/implement/SKILL.md +9 -8
- package/src/actions-artifact.mjs +17 -0
- package/src/completion-actions.mjs +30 -10
- package/src/completion.mjs +19 -0
- package/src/delivery-events.mjs +42 -0
- package/src/execution-environment.mjs +78 -0
- package/src/implementation-runtime.mjs +56 -32
- package/src/implementation.mjs +31 -19
- package/src/install-workflows.mjs +10 -7
- package/src/integration-evidence.mjs +25 -1
- package/src/issue-actions.mjs +260 -38
- package/src/opencode-execute.mjs +20 -10
- package/src/process-publication.mjs +1 -1
- package/src/proposal-review.mjs +91 -0
- package/src/proposal.mjs +22 -8
- package/src/stage-dispatch.mjs +148 -0
- package/src/stage-transition.mjs +25 -0
- package/src/worker-maintenance.mjs +83 -0
- package/src/worker-recovery.mjs +106 -0
- package/src/worker-reports.mjs +150 -0
- package/workflows/lighthouse-sdlc-apply-review.lock.yml +1335 -0
- package/workflows/lighthouse-sdlc-apply-review.md +205 -0
- package/workflows/lighthouse-sdlc-implement.lock.yml +51 -90
- package/workflows/lighthouse-sdlc-implement.md +40 -11
- package/workflows/lighthouse-sdlc-integrate.lock.yml +36 -83
- package/workflows/lighthouse-sdlc-integrate.md +25 -2
- package/workflows/lighthouse-sdlc-propose.lock.yml +44 -83
- package/workflows/lighthouse-sdlc-propose.md +33 -4
- package/workflows/lighthouse-sdlc-refine.lock.yml +45 -83
- package/workflows/lighthouse-sdlc-refine.md +32 -2
- package/workflows/lighthouse-sdlc-review.lock.yml +36 -83
- package/workflows/lighthouse-sdlc-review.md +25 -2
- package/workflows/lighthouse-sdlc-router.yml +70 -62
- package/workflows/lighthouse-worker-maintenance.yml +126 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"
|
|
1
|
+
# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"3c4a41e5a1caead0b090acda2424ef53490e5b024a6cba1b25cf5c3a08331cb4","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
|
#
|
|
@@ -29,6 +29,11 @@
|
|
|
29
29
|
# Imports:
|
|
30
30
|
# - shared/lighthouse-opencode.md
|
|
31
31
|
#
|
|
32
|
+
# Frontmatter env variables:
|
|
33
|
+
# - LIGHTHOUSE_DISPATCH_REQUIRED: (main workflow)
|
|
34
|
+
# - LIGHTHOUSE_RECOVERY_ENABLED: (main workflow)
|
|
35
|
+
# - LIGHTHOUSE_STAGE: (main workflow)
|
|
36
|
+
#
|
|
32
37
|
# Secrets used:
|
|
33
38
|
# - COPILOT_GITHUB_TOKEN
|
|
34
39
|
# - GH_AW_DEFAULT_OTLP_ENDPOINT
|
|
@@ -52,38 +57,37 @@
|
|
|
52
57
|
|
|
53
58
|
name: "Lighthouse SDLC refine"
|
|
54
59
|
on:
|
|
55
|
-
|
|
60
|
+
# roles: all # Roles processed as role check in pre-activation job
|
|
61
|
+
workflow_dispatch:
|
|
56
62
|
inputs:
|
|
57
63
|
aw_context:
|
|
58
64
|
default: ""
|
|
59
65
|
description: "Agent caller context (Reserved for Agentic Workflows)."
|
|
60
66
|
required: false
|
|
61
67
|
type: string
|
|
68
|
+
dispatch-request:
|
|
69
|
+
description: Authenticated router receipt comment ID
|
|
70
|
+
required: true
|
|
71
|
+
type: string
|
|
62
72
|
issue:
|
|
73
|
+
description: Source issue
|
|
63
74
|
required: true
|
|
64
75
|
type: string
|
|
65
|
-
secrets:
|
|
66
|
-
COPILOT_GITHUB_TOKEN:
|
|
67
|
-
required: false
|
|
68
|
-
GH_AW_DEFAULT_OTLP_ENDPOINT:
|
|
69
|
-
required: false
|
|
70
|
-
GH_AW_DEFAULT_OTLP_HEADERS:
|
|
71
|
-
required: false
|
|
72
|
-
GH_AW_GITHUB_MCP_SERVER_TOKEN:
|
|
73
|
-
required: false
|
|
74
|
-
GH_AW_GITHUB_TOKEN:
|
|
75
|
-
required: false
|
|
76
76
|
|
|
77
77
|
# Jobs receive only their explicitly declared permissions.
|
|
78
78
|
permissions: {}
|
|
79
79
|
|
|
80
80
|
concurrency:
|
|
81
|
-
|
|
81
|
+
cancel-in-progress: false
|
|
82
|
+
group: lighthouse-issue-${{ inputs.issue }}
|
|
82
83
|
queue: max
|
|
83
84
|
|
|
84
|
-
run-name: "
|
|
85
|
+
run-name: "refine #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
85
86
|
|
|
86
87
|
env:
|
|
88
|
+
LIGHTHOUSE_DISPATCH_REQUIRED: "true"
|
|
89
|
+
LIGHTHOUSE_RECOVERY_ENABLED: ${{ vars.LIGHTHOUSE_RECOVERY_ENABLED }}
|
|
90
|
+
LIGHTHOUSE_STAGE: refine
|
|
87
91
|
OTEL_EXPORTER_OTLP_ENDPOINT: ${{ secrets.GH_AW_DEFAULT_OTLP_ENDPOINT || vars.GH_AW_DEFAULT_OTLP_ENDPOINT }}
|
|
88
92
|
OTEL_SERVICE_NAME: gh-aw.lighthouse-sdlc-refine
|
|
89
93
|
OTEL_RESOURCE_ATTRIBUTES: 'gh-aw.workflow.name=Lighthouse%20SDLC%20refine,gh-aw.repository=${{ github.repository }},gh-aw.run.id=${{ github.run_id }},github.run_id=${{ github.run_id }},gh-aw.engine.id=opencode'
|
|
@@ -97,7 +101,7 @@ jobs:
|
|
|
97
101
|
needs:
|
|
98
102
|
- pre_activation
|
|
99
103
|
- prepare
|
|
100
|
-
if: needs.pre_activation.outputs.activated == 'true'
|
|
104
|
+
if: needs.pre_activation.outputs.activated == 'true' && (needs.prepare.outputs.eligible == 'true')
|
|
101
105
|
runs-on: ubuntu-24.04
|
|
102
106
|
# Permissions for the activation job (workflow permissions default to none).
|
|
103
107
|
permissions:
|
|
@@ -107,7 +111,6 @@ jobs:
|
|
|
107
111
|
GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }}
|
|
108
112
|
GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }}
|
|
109
113
|
outputs:
|
|
110
|
-
artifact_prefix: ${{ steps.artifact-prefix.outputs.prefix }}
|
|
111
114
|
aw_context: ${{ steps.generate_aw_info.outputs.aw_context }}
|
|
112
115
|
comment_id: ""
|
|
113
116
|
comment_repo: ""
|
|
@@ -125,10 +128,6 @@ jobs:
|
|
|
125
128
|
setup-span-id: ${{ steps.setup.outputs.span-id }}
|
|
126
129
|
setup-trace-id: ${{ steps.setup.outputs.trace-id }}
|
|
127
130
|
stale_lock_file_failed: ${{ steps.check-lock-file.outputs.stale_lock_file_failed == 'true' }}
|
|
128
|
-
target_checkout_ref: ${{ steps.resolve-host-repo.outputs.target_checkout_ref }}
|
|
129
|
-
target_ref: ${{ steps.resolve-host-repo.outputs.target_ref }}
|
|
130
|
-
target_repo: ${{ steps.resolve-host-repo.outputs.target_repo }}
|
|
131
|
-
target_repo_name: ${{ steps.resolve-host-repo.outputs.target_repo_name }}
|
|
132
131
|
steps:
|
|
133
132
|
- name: Setup Scripts
|
|
134
133
|
id: setup
|
|
@@ -147,27 +146,6 @@ jobs:
|
|
|
147
146
|
GH_AW_SETUP_AW_CONTEXT: ${{ inputs.aw_context }}
|
|
148
147
|
- name: Mask OTLP telemetry headers
|
|
149
148
|
run: bash "${RUNNER_TEMP}/gh-aw/actions/mask_otlp_headers.sh"
|
|
150
|
-
- name: Resolve host repo for activation checkout
|
|
151
|
-
id: resolve-host-repo
|
|
152
|
-
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
153
|
-
env:
|
|
154
|
-
JOB_WORKFLOW_REPOSITORY: ${{ job.workflow_repository }}
|
|
155
|
-
JOB_WORKFLOW_SHA: ${{ job.workflow_sha }}
|
|
156
|
-
JOB_WORKFLOW_REF: ${{ job.workflow_ref }}
|
|
157
|
-
JOB_WORKFLOW_FILE_PATH: ${{ job.workflow_file_path }}
|
|
158
|
-
with:
|
|
159
|
-
script: |
|
|
160
|
-
const path = require('path');
|
|
161
|
-
const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions');
|
|
162
|
-
const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs'));
|
|
163
|
-
setupGlobals(core, github, context, exec, io, getOctokit);
|
|
164
|
-
const { main } = require(path.join(actionsDir, 'resolve_host_repo.cjs'));
|
|
165
|
-
await main();
|
|
166
|
-
- name: Compute artifact prefix
|
|
167
|
-
id: artifact-prefix
|
|
168
|
-
env:
|
|
169
|
-
INPUTS_JSON: ${{ toJSON(inputs) }}
|
|
170
|
-
run: bash "${RUNNER_TEMP}/gh-aw/actions/compute_artifact_prefix.sh"
|
|
171
149
|
- name: Generate agentic run info
|
|
172
150
|
id: generate_aw_info
|
|
173
151
|
env:
|
|
@@ -190,7 +168,6 @@ jobs:
|
|
|
190
168
|
GH_AW_INFO_AGENT_RUNTIME: ""
|
|
191
169
|
GH_AW_INFO_MODEL_CONFIG: '{"routing":{"enabled":false}}'
|
|
192
170
|
GH_AW_COMPILED_STRICT: "false"
|
|
193
|
-
GH_AW_INFO_TARGET_REPO: ${{ steps.resolve-host-repo.outputs.target_repo }}
|
|
194
171
|
GH_AW_INFO_FEATURES: '{"dangerously-disable-sandbox-agent":true}'
|
|
195
172
|
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
196
173
|
with:
|
|
@@ -262,19 +239,10 @@ jobs:
|
|
|
262
239
|
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
|
|
263
240
|
GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
|
|
264
241
|
GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
|
|
265
|
-
- name: Print cross-repo setup guidance
|
|
266
|
-
if: failure() && steps.resolve-host-repo.outputs.target_repo != github.repository
|
|
267
|
-
run: |
|
|
268
|
-
echo "::error::COPILOT_GITHUB_TOKEN must be configured in the CALLER repository's secrets."
|
|
269
|
-
echo "::error::For cross-repo workflow_call, secrets must be set in the repository that triggers the workflow."
|
|
270
|
-
echo "::error::See: https://github.github.com/gh-aw/patterns/central-repo-ops/#cross-repo-setup"
|
|
271
242
|
- name: Checkout .github and .agents folders
|
|
272
|
-
if: steps.resolve-host-repo.outputs.target_repo == github.repository
|
|
273
243
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
274
244
|
with:
|
|
275
245
|
persist-credentials: false
|
|
276
|
-
repository: ${{ steps.resolve-host-repo.outputs.target_repo }}
|
|
277
|
-
ref: ${{ steps.resolve-host-repo.outputs.target_checkout_ref }}
|
|
278
246
|
sparse-checkout: |
|
|
279
247
|
.github
|
|
280
248
|
.agents
|
|
@@ -408,7 +376,7 @@ jobs:
|
|
|
408
376
|
if: success() || failure()
|
|
409
377
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
410
378
|
with:
|
|
411
|
-
name:
|
|
379
|
+
name: info
|
|
412
380
|
path: /tmp/gh-aw/aw_info.json
|
|
413
381
|
if-no-files-found: ignore
|
|
414
382
|
retention-days: ${{ vars.GH_AW_DEFAULT_ARTIFACT_RETENTION_DAYS || '0' }}
|
|
@@ -420,7 +388,7 @@ jobs:
|
|
|
420
388
|
if: success() || failure()
|
|
421
389
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
422
390
|
with:
|
|
423
|
-
name:
|
|
391
|
+
name: activation
|
|
424
392
|
include-hidden-files: true
|
|
425
393
|
path: |
|
|
426
394
|
/tmp/gh-aw/aw_info.json
|
|
@@ -443,7 +411,7 @@ jobs:
|
|
|
443
411
|
needs:
|
|
444
412
|
- activation
|
|
445
413
|
- prepare
|
|
446
|
-
if: needs.activation.outputs.daily_ai_credits_exceeded != 'true'
|
|
414
|
+
if: (needs.prepare.outputs.eligible == 'true') && (needs.activation.outputs.daily_ai_credits_exceeded != 'true')
|
|
447
415
|
runs-on:
|
|
448
416
|
- self-hosted
|
|
449
417
|
- linux
|
|
@@ -451,9 +419,6 @@ jobs:
|
|
|
451
419
|
# Permissions for the agent job (workflow permissions default to none).
|
|
452
420
|
permissions:
|
|
453
421
|
contents: read
|
|
454
|
-
concurrency:
|
|
455
|
-
group: "gh-aw-opencode-lighthouse-sdlc-refine"
|
|
456
|
-
queue: max
|
|
457
422
|
timeout-minutes: 60
|
|
458
423
|
env:
|
|
459
424
|
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
|
|
@@ -475,7 +440,6 @@ jobs:
|
|
|
475
440
|
ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }}
|
|
476
441
|
aic: ${{ steps.parse-mcp-gateway.outputs.aic }}
|
|
477
442
|
ambient_context: ${{ steps.parse-mcp-gateway.outputs.ambient_context }}
|
|
478
|
-
artifact_prefix: ${{ needs.activation.outputs.artifact_prefix }}
|
|
479
443
|
has_patch: ${{ steps.collect_output.outputs.has_patch }}
|
|
480
444
|
model: ${{ needs.activation.outputs.model }}
|
|
481
445
|
output: ${{ steps.collect_output.outputs.output }}
|
|
@@ -531,12 +495,13 @@ jobs:
|
|
|
531
495
|
- name: Download activation artifact
|
|
532
496
|
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
533
497
|
with:
|
|
534
|
-
name:
|
|
498
|
+
name: activation
|
|
535
499
|
path: /tmp/gh-aw
|
|
536
500
|
- name: Check out the authorized product revision
|
|
537
501
|
uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5
|
|
538
502
|
with:
|
|
539
503
|
persist-credentials: false
|
|
504
|
+
ref: ${{ needs.prepare.outputs.source_revision }}
|
|
540
505
|
- name: Setup Node.js
|
|
541
506
|
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
|
|
542
507
|
with:
|
|
@@ -924,7 +889,7 @@ jobs:
|
|
|
924
889
|
continue-on-error: true
|
|
925
890
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
926
891
|
with:
|
|
927
|
-
name:
|
|
892
|
+
name: agent-output-fallback
|
|
928
893
|
path: |
|
|
929
894
|
/tmp/gh-aw/agent_output.json
|
|
930
895
|
/tmp/gh-aw/safeoutputs.jsonl
|
|
@@ -946,7 +911,7 @@ jobs:
|
|
|
946
911
|
continue-on-error: true
|
|
947
912
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
948
913
|
with:
|
|
949
|
-
name:
|
|
914
|
+
name: agent
|
|
950
915
|
path: |
|
|
951
916
|
/tmp/gh-aw/aw-prompts/prompt.txt
|
|
952
917
|
/tmp/gh-aw/agent_execution.json
|
|
@@ -985,7 +950,7 @@ jobs:
|
|
|
985
950
|
actions: read
|
|
986
951
|
issues: write
|
|
987
952
|
concurrency:
|
|
988
|
-
group: "gh-aw-conclusion-lighthouse-sdlc-refine"
|
|
953
|
+
group: "gh-aw-conclusion-lighthouse-sdlc-refine-${{ github.run_id }}"
|
|
989
954
|
cancel-in-progress: false
|
|
990
955
|
queue: max
|
|
991
956
|
env:
|
|
@@ -1016,7 +981,7 @@ jobs:
|
|
|
1016
981
|
continue-on-error: true
|
|
1017
982
|
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
1018
983
|
with:
|
|
1019
|
-
pattern: "{
|
|
984
|
+
pattern: "{agent,agent-output-fallback}"
|
|
1020
985
|
merge-multiple: true
|
|
1021
986
|
path: /tmp/gh-aw/
|
|
1022
987
|
- name: Setup agent output environment variable
|
|
@@ -1034,7 +999,7 @@ jobs:
|
|
|
1034
999
|
continue-on-error: true
|
|
1035
1000
|
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
1036
1001
|
with:
|
|
1037
|
-
pattern:
|
|
1002
|
+
pattern: safe-outputs-items
|
|
1038
1003
|
merge-multiple: true
|
|
1039
1004
|
path: /tmp/gh-aw/
|
|
1040
1005
|
- name: Process no-op messages
|
|
@@ -1159,7 +1124,7 @@ jobs:
|
|
|
1159
1124
|
continue-on-error: true
|
|
1160
1125
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
1161
1126
|
with:
|
|
1162
|
-
name:
|
|
1127
|
+
name: usage
|
|
1163
1128
|
path: |
|
|
1164
1129
|
/tmp/gh-aw/usage/aw_session.jsonl
|
|
1165
1130
|
/tmp/gh-aw/usage/aw_info.json
|
|
@@ -1194,7 +1159,7 @@ jobs:
|
|
|
1194
1159
|
continue-on-error: true
|
|
1195
1160
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
1196
1161
|
with:
|
|
1197
|
-
name:
|
|
1162
|
+
name: usage
|
|
1198
1163
|
path: |
|
|
1199
1164
|
/tmp/gh-aw/usage/aw_session.jsonl
|
|
1200
1165
|
/tmp/gh-aw/usage/aw_info.json
|
|
@@ -1229,7 +1194,7 @@ jobs:
|
|
|
1229
1194
|
env:
|
|
1230
1195
|
GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }}
|
|
1231
1196
|
outputs:
|
|
1232
|
-
activated: ${{
|
|
1197
|
+
activated: ${{ 'true' }}
|
|
1233
1198
|
matched_command: ''
|
|
1234
1199
|
setup-parent-span-id: ${{ steps.setup.outputs.parent-span-id || steps.setup.outputs.span-id }}
|
|
1235
1200
|
setup-span-id: ${{ steps.setup.outputs.span-id }}
|
|
@@ -1247,30 +1212,20 @@ jobs:
|
|
|
1247
1212
|
GH_AW_INFO_VERSION: "2.1.0"
|
|
1248
1213
|
GH_AW_INFO_ENGINE_ID: "opencode"
|
|
1249
1214
|
GH_AW_SETUP_AW_CONTEXT: ${{ inputs.aw_context }}
|
|
1250
|
-
- name: Check team membership for workflow
|
|
1251
|
-
id: check_membership
|
|
1252
|
-
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
|
|
1253
|
-
env:
|
|
1254
|
-
GH_AW_REQUIRED_ROLES: "admin,maintainer,write"
|
|
1255
|
-
with:
|
|
1256
|
-
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
1257
|
-
script: |
|
|
1258
|
-
const path = require('path');
|
|
1259
|
-
const actionsDir = path.join(process.env.RUNNER_TEMP, 'gh-aw', 'actions');
|
|
1260
|
-
const { setupGlobals } = require(path.join(actionsDir, 'setup_globals.cjs'));
|
|
1261
|
-
setupGlobals(core, github, context, exec, io, getOctokit);
|
|
1262
|
-
const { main } = require(path.join(actionsDir, 'check_membership.cjs'));
|
|
1263
|
-
await main();
|
|
1264
1215
|
|
|
1265
1216
|
prepare:
|
|
1266
1217
|
name: Authorize and reserve issue
|
|
1267
1218
|
runs-on: ubuntu-24.04
|
|
1268
1219
|
# Permissions for the prepare job (workflow permissions default to none).
|
|
1269
1220
|
permissions:
|
|
1221
|
+
actions: read
|
|
1270
1222
|
contents: read
|
|
1271
1223
|
issues: write
|
|
1272
1224
|
env:
|
|
1273
1225
|
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
1226
|
+
outputs:
|
|
1227
|
+
eligible: ${{ steps.prepare.outputs.eligible }}
|
|
1228
|
+
source_revision: ${{ steps.prepare.outputs.source_revision }}
|
|
1274
1229
|
steps:
|
|
1275
1230
|
- name: Configure GH_HOST for enterprise compatibility
|
|
1276
1231
|
id: ghes-host-config
|
|
@@ -1295,6 +1250,7 @@ jobs:
|
|
|
1295
1250
|
env:
|
|
1296
1251
|
GH_TOKEN: ${{ github.token }}
|
|
1297
1252
|
- name: Preserve the execution request
|
|
1253
|
+
if: steps.prepare.outputs.eligible == 'true'
|
|
1298
1254
|
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
1299
1255
|
with:
|
|
1300
1256
|
if-no-files-found: error
|
|
@@ -1312,7 +1268,7 @@ jobs:
|
|
|
1312
1268
|
needs:
|
|
1313
1269
|
- agent
|
|
1314
1270
|
- prepare
|
|
1315
|
-
if: always() && needs.prepare.result == 'success'
|
|
1271
|
+
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
1316
1272
|
runs-on: ubuntu-24.04
|
|
1317
1273
|
# Permissions for the publish job (workflow permissions default to none).
|
|
1318
1274
|
permissions:
|
|
@@ -1349,7 +1305,13 @@ jobs:
|
|
|
1349
1305
|
with:
|
|
1350
1306
|
name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
1351
1307
|
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
1308
|
+
- name: Require an executed agent
|
|
1309
|
+
if: needs.agent.result != 'success'
|
|
1310
|
+
run: |
|
|
1311
|
+
echo 'The authorized agent did not complete successfully; inspect its execution.' >&2
|
|
1312
|
+
exit 1
|
|
1352
1313
|
- name: Recheck authority and publish the validated result
|
|
1314
|
+
id: publish
|
|
1353
1315
|
if: needs.agent.result == 'success'
|
|
1354
1316
|
run: node src/packages/sdlc/src/issue-actions.mjs publish
|
|
1355
1317
|
env:
|
|
@@ -2,16 +2,34 @@
|
|
|
2
2
|
# Owned by lighthouse-sdlc. Regenerate the lock with gh aw v0.93.2.
|
|
3
3
|
name: Lighthouse SDLC refine
|
|
4
4
|
description: Refine an authorized issue through OpenCode with execution logs and validated evidence.
|
|
5
|
+
run-name: "refine #${{ inputs.issue }} · request ${{ inputs.dispatch-request }}"
|
|
6
|
+
concurrency:
|
|
7
|
+
group: lighthouse-issue-${{ inputs.issue }}
|
|
8
|
+
cancel-in-progress: false
|
|
9
|
+
queue: max
|
|
10
|
+
job-discriminator: ${{ github.run_id }}
|
|
5
11
|
on:
|
|
6
|
-
|
|
12
|
+
# The required preparation job authenticates the originating owner request.
|
|
13
|
+
roles: all
|
|
14
|
+
workflow_dispatch:
|
|
7
15
|
inputs:
|
|
8
16
|
issue:
|
|
17
|
+
description: Source issue
|
|
18
|
+
required: true
|
|
19
|
+
type: string
|
|
20
|
+
dispatch-request:
|
|
21
|
+
description: Authenticated router receipt comment ID
|
|
9
22
|
required: true
|
|
10
23
|
type: string
|
|
11
24
|
needs: [prepare]
|
|
25
|
+
if: needs.prepare.outputs.eligible == 'true'
|
|
12
26
|
runs-on: [self-hosted, linux, lighthouse-workflow]
|
|
13
27
|
runs-on-slim: ubuntu-24.04
|
|
14
28
|
timeout-minutes: 15
|
|
29
|
+
env:
|
|
30
|
+
LIGHTHOUSE_RECOVERY_ENABLED: ${{ vars.LIGHTHOUSE_RECOVERY_ENABLED }}
|
|
31
|
+
LIGHTHOUSE_STAGE: refine
|
|
32
|
+
LIGHTHOUSE_DISPATCH_REQUIRED: "true"
|
|
15
33
|
permissions:
|
|
16
34
|
contents: read
|
|
17
35
|
engine:
|
|
@@ -44,6 +62,7 @@ steps:
|
|
|
44
62
|
uses: actions/checkout@v5
|
|
45
63
|
with:
|
|
46
64
|
persist-credentials: false
|
|
65
|
+
ref: ${{ needs.prepare.outputs.source_revision }}
|
|
47
66
|
- name: Load the pinned harness package
|
|
48
67
|
uses: actions/checkout@v5
|
|
49
68
|
with:
|
|
@@ -79,9 +98,13 @@ post-steps:
|
|
|
79
98
|
retention-days: 14
|
|
80
99
|
jobs:
|
|
81
100
|
prepare:
|
|
101
|
+
outputs:
|
|
102
|
+
eligible: ${{ steps.prepare.outputs.eligible }}
|
|
103
|
+
source_revision: ${{ steps.prepare.outputs.source_revision }}
|
|
82
104
|
name: Authorize and reserve issue
|
|
83
105
|
runs-on: ubuntu-24.04
|
|
84
106
|
permissions:
|
|
107
|
+
actions: read
|
|
85
108
|
contents: read
|
|
86
109
|
issues: write
|
|
87
110
|
env:
|
|
@@ -101,6 +124,7 @@ jobs:
|
|
|
101
124
|
GH_TOKEN: ${{ github.token }}
|
|
102
125
|
run: node src/packages/sdlc/src/issue-actions.mjs prepare
|
|
103
126
|
- name: Preserve the execution request
|
|
127
|
+
if: steps.prepare.outputs.eligible == 'true'
|
|
104
128
|
uses: actions/upload-artifact@v7
|
|
105
129
|
with:
|
|
106
130
|
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
@@ -115,7 +139,7 @@ jobs:
|
|
|
115
139
|
publish:
|
|
116
140
|
name: Validate, publish and release
|
|
117
141
|
needs: [prepare, agent]
|
|
118
|
-
if: always() && needs.prepare.result == 'success'
|
|
142
|
+
if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
|
|
119
143
|
runs-on: ubuntu-24.04
|
|
120
144
|
permissions:
|
|
121
145
|
contents: read
|
|
@@ -142,7 +166,13 @@ jobs:
|
|
|
142
166
|
with:
|
|
143
167
|
name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
144
168
|
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
169
|
+
- name: Require an executed agent
|
|
170
|
+
if: needs.agent.result != 'success'
|
|
171
|
+
run: |
|
|
172
|
+
echo 'The authorized agent did not complete successfully; inspect its execution.' >&2
|
|
173
|
+
exit 1
|
|
145
174
|
- name: Recheck authority and publish the validated result
|
|
175
|
+
id: publish
|
|
146
176
|
if: needs.agent.result == 'success'
|
|
147
177
|
env:
|
|
148
178
|
GH_TOKEN: ${{ github.token }}
|