@juangcarmona/lighthouse-sdlc 0.12.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.
Files changed (47) hide show
  1. package/README.md +86 -3
  2. package/completion.md +50 -0
  3. package/execution-environments.md +43 -0
  4. package/package.json +3 -1
  5. package/schemas/execution-environment.schema.json +12 -0
  6. package/skills/implement/SKILL.md +9 -8
  7. package/skills/integrate/SKILL.md +7 -1
  8. package/skills/propose/SKILL.md +1 -1
  9. package/skills/review/SKILL.md +7 -1
  10. package/src/actions-artifact.mjs +17 -0
  11. package/src/completion-actions.mjs +134 -0
  12. package/src/completion.mjs +188 -0
  13. package/src/delivery-events.mjs +42 -0
  14. package/src/execution-environment.mjs +78 -0
  15. package/src/github-profile.mjs +9 -1
  16. package/src/host-contract.mjs +7 -3
  17. package/src/implementation-runtime.mjs +90 -0
  18. package/src/implementation.mjs +155 -0
  19. package/src/install-workflows.mjs +14 -5
  20. package/src/integration-evidence.mjs +80 -0
  21. package/src/issue-actions.mjs +325 -38
  22. package/src/observe-protection.mjs +24 -0
  23. package/src/opencode-execute.mjs +128 -20
  24. package/src/opencode-progress.mjs +48 -0
  25. package/src/process-publication.mjs +90 -0
  26. package/src/proposal-review.mjs +91 -0
  27. package/src/proposal.mjs +110 -0
  28. package/src/stage-dispatch.mjs +148 -0
  29. package/src/stage-transition.mjs +25 -0
  30. package/src/worker-maintenance.mjs +83 -0
  31. package/src/worker-recovery.mjs +106 -0
  32. package/src/worker-reports.mjs +150 -0
  33. package/workflows/lighthouse-sdlc-apply-review.lock.yml +1335 -0
  34. package/workflows/lighthouse-sdlc-apply-review.md +205 -0
  35. package/workflows/lighthouse-sdlc-implement.lock.yml +285 -1158
  36. package/workflows/lighthouse-sdlc-implement.md +193 -28
  37. package/workflows/lighthouse-sdlc-integrate.lock.yml +288 -1154
  38. package/workflows/lighthouse-sdlc-integrate.md +197 -28
  39. package/workflows/lighthouse-sdlc-propose.lock.yml +274 -1157
  40. package/workflows/lighthouse-sdlc-propose.md +183 -28
  41. package/workflows/lighthouse-sdlc-refine.lock.yml +263 -90
  42. package/workflows/lighthouse-sdlc-refine.md +45 -4
  43. package/workflows/lighthouse-sdlc-review.lock.yml +288 -1154
  44. package/workflows/lighthouse-sdlc-review.md +197 -28
  45. package/workflows/lighthouse-sdlc-router.yml +91 -17
  46. package/workflows/lighthouse-worker-maintenance.yml +126 -0
  47. package/workflows/shared/lighthouse-opencode.md +4 -2
@@ -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
- workflow_call:
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:
@@ -35,7 +53,8 @@ safe-outputs:
35
53
  report-failure-as-issue: false
36
54
  report-missing-tool: false
37
55
  report-missing-data: false
38
- noop: false
56
+ noop:
57
+ report-as-issue: false
39
58
  network:
40
59
  allowed: []
41
60
  steps:
@@ -43,6 +62,7 @@ steps:
43
62
  uses: actions/checkout@v5
44
63
  with:
45
64
  persist-credentials: false
65
+ ref: ${{ needs.prepare.outputs.source_revision }}
46
66
  - name: Load the pinned harness package
47
67
  uses: actions/checkout@v5
48
68
  with:
@@ -68,11 +88,23 @@ post-steps:
68
88
  ${{ runner.temp }}/lighthouse-${{ github.run_id }}-${{ github.run_attempt }}/runtime.json
69
89
  if-no-files-found: error
70
90
  retention-days: 14
91
+ - name: Preserve OpenCode diagnostic events
92
+ if: always()
93
+ uses: actions/upload-artifact@v7
94
+ with:
95
+ name: opencode-events-${{ inputs.issue }}-${{ github.run_attempt }}
96
+ path: ${{ runner.temp }}/gh-aw/opencode-events-${{ github.run_id }}-${{ github.run_attempt }}.jsonl
97
+ if-no-files-found: ignore
98
+ retention-days: 14
71
99
  jobs:
72
100
  prepare:
101
+ outputs:
102
+ eligible: ${{ steps.prepare.outputs.eligible }}
103
+ source_revision: ${{ steps.prepare.outputs.source_revision }}
73
104
  name: Authorize and reserve issue
74
105
  runs-on: ubuntu-24.04
75
106
  permissions:
107
+ actions: read
76
108
  contents: read
77
109
  issues: write
78
110
  env:
@@ -92,6 +124,7 @@ jobs:
92
124
  GH_TOKEN: ${{ github.token }}
93
125
  run: node src/packages/sdlc/src/issue-actions.mjs prepare
94
126
  - name: Preserve the execution request
127
+ if: steps.prepare.outputs.eligible == 'true'
95
128
  uses: actions/upload-artifact@v7
96
129
  with:
97
130
  name: lighthouse-input-${{ inputs.issue }}-${{ github.run_attempt }}
@@ -106,7 +139,7 @@ jobs:
106
139
  publish:
107
140
  name: Validate, publish and release
108
141
  needs: [prepare, agent]
109
- if: always() && needs.prepare.result == 'success'
142
+ if: always() && needs.prepare.result == 'success' && needs.prepare.outputs.eligible == 'true'
110
143
  runs-on: ubuntu-24.04
111
144
  permissions:
112
145
  contents: read
@@ -133,7 +166,13 @@ jobs:
133
166
  with:
134
167
  name: lighthouse-result-${{ inputs.issue }}-${{ github.run_attempt }}
135
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
136
174
  - name: Recheck authority and publish the validated result
175
+ id: publish
137
176
  if: needs.agent.result == 'success'
138
177
  env:
139
178
  GH_TOKEN: ${{ github.token }}
@@ -149,4 +188,6 @@ jobs:
149
188
 
150
189
  Execute the single refinement stage described by the trusted context in `/input/context.json`. Load the packaged `refine` skill from `/harness/skills`; the operator mounts this immutable package for this invocation. Read the product source under `/workspace` as task data. Write the complete JSON envelope to `/output/envelope.json`.
151
190
 
152
- Return `status: passed` with `gate: ready` only when all current refinement checks pass. Otherwise preserve the missing evidence and return `blocked`. Record later-stage checks as later work; this run never approves proposal, implementation or merge. GitHub publication belongs to the separate publisher job. Produce the envelope before ending the session.
191
+ Write a brief public progress update before inspecting sources and after findings that change the assessment. Explain what you are checking, what you found and the next action. Keep file contents and protocol details in tool results.
192
+
193
+ Return `status: passed` with `gate: ready` only when all current refinement checks pass. Otherwise preserve the missing evidence and return `blocked`. Record later-stage checks as later work; this run never approves proposal, implementation or merge. GitHub publication belongs to the separate publisher job. Produce the envelope before ending the session. The trusted engine adapter validates that envelope and records the terminal gh-aw completion signal; do not call safe-output tools yourself.