@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.
- package/README.md +37 -3
- package/completion.md +48 -0
- package/package.json +2 -1
- package/skills/integrate/SKILL.md +7 -1
- package/skills/propose/SKILL.md +1 -1
- package/skills/review/SKILL.md +7 -1
- package/src/completion-actions.mjs +114 -0
- package/src/completion.mjs +169 -0
- package/src/github-profile.mjs +9 -1
- package/src/host-contract.mjs +7 -3
- package/src/implementation-runtime.mjs +66 -0
- package/src/implementation.mjs +143 -0
- package/src/install-workflows.mjs +11 -5
- package/src/integration-evidence.mjs +56 -0
- package/src/issue-actions.mjs +83 -18
- package/src/observe-protection.mjs +24 -0
- package/src/opencode-execute.mjs +117 -19
- package/src/opencode-progress.mjs +48 -0
- package/src/process-publication.mjs +90 -0
- package/src/proposal.mjs +96 -0
- package/workflows/lighthouse-sdlc-implement.lock.yml +251 -1085
- package/workflows/lighthouse-sdlc-implement.md +165 -29
- package/workflows/lighthouse-sdlc-integrate.lock.yml +257 -1076
- package/workflows/lighthouse-sdlc-integrate.md +175 -29
- package/workflows/lighthouse-sdlc-propose.lock.yml +241 -1085
- package/workflows/lighthouse-sdlc-propose.md +155 -29
- package/workflows/lighthouse-sdlc-refine.lock.yml +219 -8
- package/workflows/lighthouse-sdlc-refine.md +13 -2
- package/workflows/lighthouse-sdlc-review.lock.yml +257 -1076
- package/workflows/lighthouse-sdlc-review.md +175 -29
- package/workflows/lighthouse-sdlc-router.yml +71 -5
- package/workflows/shared/lighthouse-opencode.md +4 -2
|
@@ -1,41 +1,177 @@
|
|
|
1
1
|
---
|
|
2
|
-
# Owned by
|
|
2
|
+
# Owned by lighthouse-sdlc. Regenerate the lock with gh aw v0.93.2.
|
|
3
3
|
name: Lighthouse SDLC implement
|
|
4
|
-
description:
|
|
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: implement
|
|
11
|
-
LIGHTHOUSE_SKILL: node_modules/@juangcarmona/lighthouse-sdlc/skills/implement/SKILL.md
|
|
4
|
+
description: Implement an owner-approved proposal in an isolated workspace and deliver a reviewable PR.
|
|
12
5
|
on:
|
|
13
6
|
workflow_call:
|
|
14
7
|
inputs:
|
|
15
|
-
|
|
16
|
-
description: Lighthouse route selected by the host.
|
|
17
|
-
required: true
|
|
18
|
-
type: string
|
|
19
|
-
run-id:
|
|
20
|
-
description: Stable Lighthouse run identifier.
|
|
8
|
+
issue:
|
|
21
9
|
required: true
|
|
22
10
|
type: string
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
default: propose
|
|
11
|
+
needs: [prepare]
|
|
12
|
+
runs-on: [self-hosted, linux, lighthouse-workflow]
|
|
13
|
+
runs-on-slim: ubuntu-24.04
|
|
14
|
+
timeout-minutes: 55
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
engine:
|
|
18
|
+
id: opencode
|
|
19
|
+
command: node
|
|
33
20
|
imports:
|
|
34
|
-
- shared/lighthouse-
|
|
21
|
+
- shared/lighthouse-opencode.md
|
|
22
|
+
# Subscription authentication runs inside the operator's Docker engine sandbox.
|
|
23
|
+
# This profile does not claim AWF network isolation or API-proxy credential isolation.
|
|
24
|
+
strict: false
|
|
25
|
+
features:
|
|
26
|
+
dangerously-disable-sandbox-agent: true
|
|
27
|
+
sandbox:
|
|
28
|
+
agent: false
|
|
29
|
+
tools:
|
|
30
|
+
github: false
|
|
31
|
+
safe-outputs:
|
|
32
|
+
create-issue: false
|
|
33
|
+
report-incomplete: false
|
|
34
|
+
threat-detection: false
|
|
35
|
+
report-failure-as-issue: false
|
|
36
|
+
report-missing-tool: false
|
|
37
|
+
report-missing-data: false
|
|
38
|
+
noop:
|
|
39
|
+
report-as-issue: false
|
|
40
|
+
network:
|
|
41
|
+
allowed: []
|
|
42
|
+
steps:
|
|
43
|
+
- name: Check out the authorized product revision
|
|
44
|
+
uses: actions/checkout@v5
|
|
45
|
+
with:
|
|
46
|
+
persist-credentials: false
|
|
47
|
+
- name: Load the pinned harness package
|
|
48
|
+
uses: actions/checkout@v5
|
|
49
|
+
with:
|
|
50
|
+
repository: juangcarmona/lighthouse
|
|
51
|
+
ref: __LIGHTHOUSE_REF__
|
|
52
|
+
path: tools
|
|
53
|
+
persist-credentials: false
|
|
54
|
+
- name: Load the authorized issue context
|
|
55
|
+
uses: actions/download-artifact@v8
|
|
56
|
+
with:
|
|
57
|
+
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
58
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
59
|
+
post-steps:
|
|
60
|
+
- name: Validate the Lighthouse result
|
|
61
|
+
run: node tools/src/packages/sdlc/src/issue-actions.mjs validate
|
|
62
|
+
- name: Preserve the result and runtime receipt
|
|
63
|
+
if: always()
|
|
64
|
+
uses: actions/upload-artifact@v7
|
|
65
|
+
with:
|
|
66
|
+
name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
67
|
+
path: |
|
|
68
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/envelope.json
|
|
69
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/runtime.json
|
|
70
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/changes.json
|
|
71
|
+
${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/checks.json
|
|
72
|
+
if-no-files-found: error
|
|
73
|
+
retention-days: 14
|
|
74
|
+
- name: Preserve implementation evidence
|
|
75
|
+
if: always()
|
|
76
|
+
uses: actions/upload-artifact@v7
|
|
77
|
+
with:
|
|
78
|
+
name: implementation-evidence-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
79
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/evidence/
|
|
80
|
+
if-no-files-found: ignore
|
|
81
|
+
retention-days: 30
|
|
82
|
+
- name: Preserve OpenCode diagnostic events
|
|
83
|
+
if: always()
|
|
84
|
+
uses: actions/upload-artifact@v7
|
|
85
|
+
with:
|
|
86
|
+
name: opencode-events-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
87
|
+
path: ${{ runner.temp }}/gh-aw/opencode-events-${{ github.run_id }}-${{ github.run_attempt }}.jsonl
|
|
88
|
+
if-no-files-found: ignore
|
|
89
|
+
retention-days: 14
|
|
90
|
+
jobs:
|
|
91
|
+
prepare:
|
|
92
|
+
name: Authorize and reserve issue
|
|
93
|
+
runs-on: ubuntu-24.04
|
|
94
|
+
permissions:
|
|
95
|
+
actions: read
|
|
96
|
+
contents: read
|
|
97
|
+
issues: write
|
|
98
|
+
env:
|
|
99
|
+
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
100
|
+
steps:
|
|
101
|
+
- uses: actions/checkout@v5
|
|
102
|
+
with:
|
|
103
|
+
repository: juangcarmona/lighthouse
|
|
104
|
+
ref: __LIGHTHOUSE_REF__
|
|
105
|
+
persist-credentials: false
|
|
106
|
+
- uses: actions/setup-node@v5
|
|
107
|
+
with:
|
|
108
|
+
node-version: 24
|
|
109
|
+
- name: Collect verified owner intent and reserve the issue
|
|
110
|
+
id: prepare
|
|
111
|
+
env:
|
|
112
|
+
GH_TOKEN: ${{ github.token }}
|
|
113
|
+
run: node src/packages/sdlc/src/issue-actions.mjs prepare
|
|
114
|
+
- name: Preserve the execution request
|
|
115
|
+
uses: actions/upload-artifact@v7
|
|
116
|
+
with:
|
|
117
|
+
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
118
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/
|
|
119
|
+
if-no-files-found: error
|
|
120
|
+
retention-days: 14
|
|
121
|
+
- name: Release reservation if preparation failed
|
|
122
|
+
if: failure()
|
|
123
|
+
env:
|
|
124
|
+
GH_TOKEN: ${{ github.token }}
|
|
125
|
+
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
126
|
+
publish:
|
|
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
|
+
contents: write
|
|
133
|
+
issues: write
|
|
134
|
+
pull-requests: write
|
|
135
|
+
env:
|
|
136
|
+
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
137
|
+
steps:
|
|
138
|
+
- uses: actions/checkout@v5
|
|
139
|
+
with:
|
|
140
|
+
repository: juangcarmona/lighthouse
|
|
141
|
+
ref: __LIGHTHOUSE_REF__
|
|
142
|
+
persist-credentials: false
|
|
143
|
+
- uses: actions/setup-node@v5
|
|
144
|
+
with:
|
|
145
|
+
node-version: 24
|
|
146
|
+
- name: Load the execution request
|
|
147
|
+
uses: actions/download-artifact@v8
|
|
148
|
+
with:
|
|
149
|
+
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
150
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
151
|
+
- name: Load the candidate result
|
|
152
|
+
if: needs.agent.result == 'success'
|
|
153
|
+
uses: actions/download-artifact@v8
|
|
154
|
+
with:
|
|
155
|
+
name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
156
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
157
|
+
- name: Recheck authority and publish the validated result
|
|
158
|
+
if: needs.agent.result == 'success'
|
|
159
|
+
env:
|
|
160
|
+
GH_TOKEN: ${{ github.token }}
|
|
161
|
+
run: node src/packages/sdlc/src/issue-actions.mjs publish
|
|
162
|
+
- name: Release the issue reservation
|
|
163
|
+
if: always()
|
|
164
|
+
env:
|
|
165
|
+
GH_TOKEN: ${{ github.token }}
|
|
166
|
+
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
35
167
|
---
|
|
36
168
|
|
|
37
|
-
#
|
|
169
|
+
# Implement the approved change
|
|
170
|
+
|
|
171
|
+
Execute `implement` using `/input/context.json` and `/harness/skills/implement/SKILL.md`. Read the merged proposal at `context.implementation.proposal.root`, the repository policy and the authorized scope. Work inside `/workspace`, a disposable writable copy; only `implementation.policy.paths` may change. The packaged harness and context remain read-only.
|
|
172
|
+
|
|
173
|
+
Report public progress before inspection and whenever a decision, test result or blocker changes the plan. Explain the evidence briefly; avoid dumping tool payloads. Use the shell to install public dependencies, edit source and run checks. Preserve content and author-owned work. Record completed tasks accurately. Store screenshots, test reports and a concise retrospective in `/output/evidence/`; the host retains them as Actions artifacts.
|
|
38
174
|
|
|
39
|
-
|
|
175
|
+
Run the commands in `implementation.policy.checks` and relevant repository checks. The host reruns those commands independently on a clean candidate without provider or GitHub credentials. Return `/output/envelope.json` with the supplied identity. A required human visual/content decision is a real blocker: use `blocked`, record it in `pendingReview`, and still deliver the reviewable code. A passed `done` assessment requires all required evidence and reviews. Reserve time to write the envelope within the 30-minute engine limit.
|
|
40
176
|
|
|
41
|
-
|
|
177
|
+
The separate publisher rechecks owner authority, source revision, write scope and check receipts before opening a fresh PR. It never updates an existing branch, merges, closes the issue or starts another stage. End after writing the envelope; the adapter records gh-aw completion.
|