@juangcarmona/lighthouse-sdlc 0.11.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 +45 -9
- package/completion.md +48 -0
- package/host-contract.md +2 -0
- package/package.json +2 -1
- package/skills/integrate/SKILL.md +7 -1
- package/skills/propose/SKILL.md +1 -1
- package/skills/refine/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 +8 -4
- package/src/implementation-runtime.mjs +66 -0
- package/src/implementation.mjs +143 -0
- package/src/install-workflows.mjs +30 -0
- package/src/integration-evidence.mjs +56 -0
- package/src/issue-actions.mjs +189 -0
- package/src/observe-protection.mjs +24 -0
- package/src/opencode-execute.mjs +188 -0
- 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 +239 -1085
- package/workflows/lighthouse-sdlc-refine.md +151 -29
- package/workflows/lighthouse-sdlc-review.lock.yml +257 -1076
- package/workflows/lighthouse-sdlc-review.md +175 -29
- package/workflows/lighthouse-sdlc-router.yml +84 -145
- package/workflows/shared/lighthouse-opencode.md +22 -0
|
@@ -1,41 +1,167 @@
|
|
|
1
1
|
---
|
|
2
|
-
# Owned by
|
|
2
|
+
# Owned by lighthouse-sdlc. Regenerate the lock with gh aw v0.93.2.
|
|
3
3
|
name: Lighthouse SDLC propose
|
|
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: propose
|
|
11
|
-
LIGHTHOUSE_SKILL: node_modules/@juangcarmona/lighthouse-sdlc/skills/propose/SKILL.md
|
|
4
|
+
description: Produce a validated OpenSpec proposal PR from an owner-authorized ready issue.
|
|
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: refine
|
|
11
|
+
needs: [prepare]
|
|
12
|
+
runs-on: [self-hosted, linux, lighthouse-workflow]
|
|
13
|
+
runs-on-slim: ubuntu-24.04
|
|
14
|
+
timeout-minutes: 15
|
|
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
|
+
if-no-files-found: error
|
|
71
|
+
retention-days: 14
|
|
72
|
+
- name: Preserve OpenCode diagnostic events
|
|
73
|
+
if: always()
|
|
74
|
+
uses: actions/upload-artifact@v7
|
|
75
|
+
with:
|
|
76
|
+
name: opencode-events-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
77
|
+
path: ${{ runner.temp }}/gh-aw/opencode-events-${{ github.run_id }}-${{ github.run_attempt }}.jsonl
|
|
78
|
+
if-no-files-found: ignore
|
|
79
|
+
retention-days: 14
|
|
80
|
+
jobs:
|
|
81
|
+
prepare:
|
|
82
|
+
name: Authorize and reserve issue
|
|
83
|
+
runs-on: ubuntu-24.04
|
|
84
|
+
permissions:
|
|
85
|
+
actions: read
|
|
86
|
+
contents: read
|
|
87
|
+
issues: write
|
|
88
|
+
env:
|
|
89
|
+
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
90
|
+
steps:
|
|
91
|
+
- uses: actions/checkout@v5
|
|
92
|
+
with:
|
|
93
|
+
repository: juangcarmona/lighthouse
|
|
94
|
+
ref: __LIGHTHOUSE_REF__
|
|
95
|
+
persist-credentials: false
|
|
96
|
+
- uses: actions/setup-node@v5
|
|
97
|
+
with:
|
|
98
|
+
node-version: 24
|
|
99
|
+
- name: Collect verified owner intent and reserve the issue
|
|
100
|
+
id: prepare
|
|
101
|
+
env:
|
|
102
|
+
GH_TOKEN: ${{ github.token }}
|
|
103
|
+
run: node src/packages/sdlc/src/issue-actions.mjs prepare
|
|
104
|
+
- name: Preserve the execution request
|
|
105
|
+
uses: actions/upload-artifact@v7
|
|
106
|
+
with:
|
|
107
|
+
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
108
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/
|
|
109
|
+
if-no-files-found: error
|
|
110
|
+
retention-days: 14
|
|
111
|
+
- name: Release reservation if preparation failed
|
|
112
|
+
if: failure()
|
|
113
|
+
env:
|
|
114
|
+
GH_TOKEN: ${{ github.token }}
|
|
115
|
+
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
116
|
+
publish:
|
|
117
|
+
name: Validate, publish and release
|
|
118
|
+
needs: [prepare, agent]
|
|
119
|
+
if: always() && needs.prepare.result == 'success'
|
|
120
|
+
runs-on: ubuntu-24.04
|
|
121
|
+
permissions:
|
|
122
|
+
contents: write
|
|
123
|
+
issues: write
|
|
124
|
+
pull-requests: write
|
|
125
|
+
env:
|
|
126
|
+
LIGHTHOUSE_ISSUE: ${{ inputs.issue }}
|
|
127
|
+
steps:
|
|
128
|
+
- uses: actions/checkout@v5
|
|
129
|
+
with:
|
|
130
|
+
repository: juangcarmona/lighthouse
|
|
131
|
+
ref: __LIGHTHOUSE_REF__
|
|
132
|
+
persist-credentials: false
|
|
133
|
+
- uses: actions/setup-node@v5
|
|
134
|
+
with:
|
|
135
|
+
node-version: 24
|
|
136
|
+
- name: Load the execution request
|
|
137
|
+
uses: actions/download-artifact@v8
|
|
138
|
+
with:
|
|
139
|
+
name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
140
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
141
|
+
- name: Load the candidate result
|
|
142
|
+
if: needs.agent.result == 'success'
|
|
143
|
+
uses: actions/download-artifact@v8
|
|
144
|
+
with:
|
|
145
|
+
name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
|
|
146
|
+
path: ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}
|
|
147
|
+
- name: Recheck authority and publish the validated result
|
|
148
|
+
if: needs.agent.result == 'success'
|
|
149
|
+
env:
|
|
150
|
+
GH_TOKEN: ${{ github.token }}
|
|
151
|
+
run: node src/packages/sdlc/src/issue-actions.mjs publish
|
|
152
|
+
- name: Release the issue reservation
|
|
153
|
+
if: always()
|
|
154
|
+
env:
|
|
155
|
+
GH_TOKEN: ${{ github.token }}
|
|
156
|
+
run: node src/packages/sdlc/src/issue-actions.mjs cleanup
|
|
35
157
|
---
|
|
36
158
|
|
|
37
|
-
#
|
|
159
|
+
# Propose the authorized change
|
|
160
|
+
|
|
161
|
+
Execute only `propose` using the trusted context in `/input/context.json` and the packaged `/harness/skills/propose/SKILL.md`. The host has authenticated the passed refinement and the owner's explicit request. Inspect the current read-only source under `/workspace`, including product and architecture policy, relevant existing specifications and active changes.
|
|
162
|
+
|
|
163
|
+
Write brief public progress before source inspection and when you choose an approach or find a blocker. Explain the decision and supporting evidence. Keep tool payloads out of progress messages.
|
|
38
164
|
|
|
39
|
-
|
|
165
|
+
Follow `context.proposal.instructions` from the pinned OpenSpec provider, in order: proposal, specifications and design, then tasks. Return the actual Markdown files in `result.output.files`, each with `path` and `content`, under the authorized `context.proposal.root`. Include a concise proposal, design alternatives and trade-offs, testable specification scenarios, dependency-ordered unchecked tasks, validation and visual evidence plans where applicable. Every refined acceptance criterion needs a corresponding task or specification. Preserve existing product authority. Keep unresolved product decisions explicit rather than inventing approval.
|
|
40
166
|
|
|
41
|
-
|
|
167
|
+
Write `/output/envelope.json` using the supplied schema and identity. A complete proposal returns `passed` with gate `planned`; it is a candidate for owner review, not approved implementation. Return `blocked` with the precise missing decision when the proposal cannot be completed. The separate publisher checks the file boundary, runs OpenSpec strict validation and opens a proposal PR. The engine writes no repository files and has no GitHub credentials. End after the envelope; the trusted adapter records gh-aw completion.
|