@juangcarmona/lighthouse-sdlc 0.12.0 → 0.13.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.
@@ -1,41 +1,187 @@
1
1
  ---
2
- # Owned by @juangcarmona/lighthouse-sdlc. Compile with `gh aw compile`; do not edit the lock file.
2
+ # Owned by lighthouse-sdlc. Regenerate the lock with gh aw v0.93.2.
3
3
  name: Lighthouse SDLC integrate
4
- description: Execute only the Lighthouse integration stage and return its declared stage result.
5
- private: true
6
- runs-on: [self-hosted, linux, lighthouse-sdlc]
7
- runs-on-slim: ubuntu-24.04
8
- strict: true
9
- env:
10
- LIGHTHOUSE_STAGE: integrate
11
- LIGHTHOUSE_SKILL: node_modules/@juangcarmona/lighthouse-sdlc/skills/integrate/SKILL.md
4
+ description: Assess integrate with OpenCode and retain a verified delivery record.
12
5
  on:
13
6
  workflow_call:
14
7
  inputs:
15
- route:
16
- description: Lighthouse route selected by the host.
8
+ issue:
17
9
  required: true
18
10
  type: string
19
- run-id:
20
- description: Stable Lighthouse run identifier.
21
- required: true
22
- type: string
23
- input:
24
- description: Compact JSON input for this stage.
25
- required: false
26
- type: string
27
- default: '{}'
28
- previous-stage:
29
- description: Previous stage artifact name.
30
- required: false
31
- type: string
32
- default: implement
11
+ needs: [prepare]
12
+ runs-on: [self-hosted, linux, lighthouse-workflow]
13
+ runs-on-slim: ubuntu-24.04
14
+ timeout-minutes: 15
15
+ env:
16
+ LIGHTHOUSE_STAGE: integrate
17
+ permissions:
18
+ contents: read
19
+ engine:
20
+ id: opencode
21
+ command: node
33
22
  imports:
34
- - shared/lighthouse-sdlc-stage.md
23
+ - shared/lighthouse-opencode.md
24
+ # Subscription authentication runs inside the operator's Docker engine sandbox.
25
+ # This profile does not claim AWF network isolation or API-proxy credential isolation.
26
+ strict: false
27
+ features:
28
+ dangerously-disable-sandbox-agent: true
29
+ sandbox:
30
+ agent: false
31
+ tools:
32
+ github: false
33
+ safe-outputs:
34
+ create-issue: false
35
+ report-incomplete: false
36
+ threat-detection: false
37
+ report-failure-as-issue: false
38
+ report-missing-tool: false
39
+ report-missing-data: false
40
+ noop:
41
+ report-as-issue: false
42
+ network:
43
+ allowed: []
44
+ steps:
45
+ - name: Check out the authorized product revision
46
+ uses: actions/checkout@v5
47
+ with:
48
+ ref: ${{ needs.prepare.outputs.revision }}
49
+ persist-credentials: false
50
+ - name: Load the pinned harness package
51
+ uses: actions/checkout@v5
52
+ with:
53
+ repository: juangcarmona/lighthouse
54
+ ref: __LIGHTHOUSE_REF__
55
+ path: tools
56
+ persist-credentials: false
57
+ - name: Load the authorized issue context
58
+ uses: actions/download-artifact@v8
59
+ with:
60
+ name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
61
+ path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
62
+ post-steps:
63
+ - name: Validate the Lighthouse result
64
+ run: node tools/src/packages/sdlc/src/completion-actions.mjs validate
65
+ - name: Preserve the result and runtime receipt
66
+ if: always()
67
+ uses: actions/upload-artifact@v7
68
+ with:
69
+ name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
70
+ path: |
71
+ ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/envelope.json
72
+ ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/runtime.json
73
+ if-no-files-found: error
74
+ retention-days: 14
75
+ - name: Preserve OpenCode diagnostic events
76
+ if: always()
77
+ uses: actions/upload-artifact@v7
78
+ with:
79
+ name: opencode-events-${{ inputs.issue }}-${{ github.run_attempt }}
80
+ path: ${{ runner.temp }}/gh-aw/opencode-events-${{ github.run_id }}-${{ github.run_attempt }}.jsonl
81
+ if-no-files-found: ignore
82
+ retention-days: 14
83
+ jobs:
84
+ prepare:
85
+ outputs:
86
+ revision: ${{ steps.prepare.outputs.revision }}
87
+ name: Verify accepted commit, checks and evidence protection
88
+ runs-on: ubuntu-24.04
89
+ permissions:
90
+ actions: read
91
+ checks: read
92
+ contents: read
93
+ pull-requests: read
94
+ issues: write
95
+ env:
96
+ LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
97
+ steps:
98
+ - uses: actions/checkout@v5
99
+ with:
100
+ repository: juangcarmona/lighthouse
101
+ ref: __LIGHTHOUSE_REF__
102
+ persist-credentials: false
103
+ - uses: actions/setup-node@v5
104
+ with:
105
+ node-version: 24
106
+ - name: Collect verified owner intent and reserve the issue
107
+ id: prepare
108
+ env:
109
+ GH_TOKEN: ${{ github.token }}
110
+ run: node src/packages/sdlc/src/completion-actions.mjs prepare
111
+ - name: Preserve the execution request
112
+ uses: actions/upload-artifact@v7
113
+ with:
114
+ name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
115
+ path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/
116
+ if-no-files-found: error
117
+ retention-days: 14
118
+ - name: Release reservation if preparation failed
119
+ if: failure()
120
+ env:
121
+ GH_TOKEN: ${{ github.token }}
122
+ run: node src/packages/sdlc/src/completion-actions.mjs cleanup
123
+ publish:
124
+ concurrency:
125
+ group: lighthouse-process-publication
126
+ cancel-in-progress: false
127
+ name: Validate, publish and release
128
+ needs: [prepare, agent]
129
+ if: always() && needs.prepare.result == 'success'
130
+ runs-on: ubuntu-24.04
131
+ permissions:
132
+ actions: write
133
+ checks: read
134
+ contents: write
135
+ pull-requests: write
136
+ issues: write
137
+ env:
138
+ LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
139
+ steps:
140
+ - uses: actions/checkout@v5
141
+ with:
142
+ repository: juangcarmona/lighthouse
143
+ ref: __LIGHTHOUSE_REF__
144
+ persist-credentials: false
145
+ - uses: actions/setup-node@v5
146
+ with:
147
+ node-version: 24
148
+ - name: Load the execution request
149
+ uses: actions/download-artifact@v8
150
+ with:
151
+ name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
152
+ path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
153
+ - name: Load the candidate result
154
+ if: needs.agent.result == 'success'
155
+ uses: actions/download-artifact@v8
156
+ with:
157
+ name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
158
+ path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
159
+ - name: Recheck authority and publish the validated result
160
+ if: needs.agent.result == 'success'
161
+ env:
162
+ GH_TOKEN: ${{ github.token }}
163
+ run: node src/packages/sdlc/src/completion-actions.mjs publish
164
+ - name: Preserve merge and publication receipts
165
+ if: always()
166
+ uses: actions/upload-artifact@v7
167
+ with:
168
+ name: lighthouse-completion-${{ inputs.issue }}-${{ github.run_attempt }}
169
+ path: |
170
+ ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/integration-receipt.json
171
+ ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/publication-receipt.json
172
+ if-no-files-found: warn
173
+ retention-days: 30
174
+ - name: Release the issue reservation
175
+ if: always()
176
+ env:
177
+ GH_TOKEN: ${{ github.token }}
178
+ run: node src/packages/sdlc/src/completion-actions.mjs cleanup
35
179
  ---
36
180
 
37
- # Lighthouse SDLC integrate worker
181
+ # Integrate the accepted delivery
182
+
183
+ Follow `/harness/skills/integrate/SKILL.md` using `/input/context.json`. The host supplies the accepted PR revision, intent and policy fingerprints, changed paths and authenticated GitHub check results. Source under `/workspace` is read-only. Inspect affected guidance and acceptance evidence; a green check alone does not establish intended behavior. Distinguish missing verification from a failed check.
38
184
 
39
- Execute only `integrate` by following `${{ env.LIGHTHOUSE_SKILL }}` and reading the implementation result from `/tmp/gh-aw/agent/previous/stage-result.json` when present; for a supervised run, use the predecessor context in `/tmp/gh-aw/agent/input.json`. Recheck Done evidence, dependencies, branch, pull request and required checks.
185
+ Explain each decision and finding in public progress messages. Write `/output/envelope.json` with the supplied identity. Return `blocked` for unresolved current-stage evidence or decisions. For review, include `output.retrospective` as concise Markdown: what went well, what went wrong, start doing, stop doing and improvement candidates with evidence and an owner. Do not infer recurrence from retries of a single issue. Separate actual source defects from process gaps; proposed guards need their own review and regression proof.
40
186
 
41
- Prepare the configured merge or stacked-change action and leave protected or human decisions explicit. Do not merge unless the selected route and repository policy authorize it. Write one valid result to `/tmp/gh-aw/agent/stage-result.json` with `stage: integrate`, `gate: done`, the integration record in `output`, and separate evidence arrays. Do not invoke `review`; stop at the configured merge preparation, then call `noop` exactly once.
187
+ The publisher rechecks current authority, GitHub checks and reservation. Only an explicit owner dispatch with `merge: true` can authorize integration, and GitHub still enforces merge rules. A passed assessment never proves a merge occurred. Review records learning without changing permissions, opening issues or starting another stage. The host validates the envelope and records the gh-aw completion signal.