@plainconceptsplatform/workflows 0.4.34 → 0.5.1
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 +88 -88
- package/loops/actions/agent-output.cjs +17 -17
- package/loops/actions/audit-close/action.yml +24 -0
- package/loops/actions/classify-route/action.yml +1 -3
- package/loops/actions/classify-route/classify-route.sh +40 -35
- package/loops/actions/update-changelog/action.yml +113 -0
- package/loops/actions/validate-merge-gate-output/action.yml +40 -40
- package/loops/actions/validate-refine-output/validate-refine-output.sh +16 -3
- package/loops/actions/validate-review-output/action.yml +35 -35
- package/loops/actions/validate-triage-output/action.yml +36 -36
- package/loops/actions/verify-route-matrix/verify-route-matrix.sh +91 -36
- package/loops/scripts/compile-agent-workflows.mjs +195 -6
- package/loops/templates/agentics/agentics-checks.yml +86 -86
- package/loops/templates/agentics/agentics-maintenance.yml +121 -121
- package/loops/templates/ci/app-ci-dotnet-next.yml +268 -171
- package/loops/templates/ci/app-ci-node-monorepo.yml +208 -178
- package/loops/templates/issues/bug_report.yml +109 -109
- package/loops/templates/issues/feature_request.yml +75 -75
- package/loops/templates/opencode/opencode.ci.json +49 -47
- package/loops/templates/opencode/opencode.ci.json.md +46 -41
- package/loops/templates/release/github-release.yml +30 -30
- package/loops/workflows/agent-apply-review.md +465 -443
- package/loops/workflows/agent-audit.md +213 -197
- package/loops/workflows/agent-implement.md +538 -414
- package/loops/workflows/agent-merge-gate.md +730 -584
- package/loops/workflows/agent-refine.md +609 -418
- package/loops/workflows/agent-release.md +258 -0
- package/loops/workflows/agent-triage.md +447 -439
- package/loops/workflows/authorize-bot-work.yml +85 -82
- package/loops/workflows/shared/opencode-ci.md +206 -197
- package/loops/workflows/shared/platform-defaults.md +19 -16
- package/loops/workflows/work-router.yml +862 -632
- package/package.json +7 -8
- package/dist/action-validation.test.d.ts +0 -1
- package/dist/action-validation.test.js +0 -84
- package/dist/catalog-installation.d.ts +0 -30
- package/dist/catalog-installation.js +0 -379
- package/dist/catalog-installation.test.d.ts +0 -1
- package/dist/catalog-installation.test.js +0 -448
- package/dist/catalog-listing.d.ts +0 -13
- package/dist/catalog-listing.js +0 -70
- package/dist/catalog-listing.test.d.ts +0 -1
- package/dist/catalog-listing.test.js +0 -150
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -218
- package/dist/index.test.d.ts +0 -1
- package/dist/index.test.js +0 -273
- package/dist/repository-inspection.d.ts +0 -23
- package/dist/repository-inspection.js +0 -113
- package/dist/repository-inspection.test.d.ts +0 -1
- package/dist/repository-inspection.test.js +0 -77
- package/dist/repository-state.d.ts +0 -18
- package/dist/repository-state.js +0 -77
- package/dist/repository-state.test.d.ts +0 -1
- package/dist/repository-state.test.js +0 -96
- package/dist/route-processing.d.ts +0 -6
- package/dist/route-processing.js +0 -150
- package/dist/route-processing.test.d.ts +0 -1
- package/dist/route-processing.test.js +0 -350
- package/dist/stack-defaults.d.ts +0 -11
- package/dist/stack-defaults.js +0 -104
- package/dist/stack-defaults.test.d.ts +0 -1
- package/dist/stack-defaults.test.js +0 -266
- package/dist/tui.d.ts +0 -25
- package/dist/tui.js +0 -287
- package/dist/tui.test.d.ts +0 -1
- package/dist/tui.test.js +0 -246
- package/dist/workflow-catalog.d.ts +0 -25
- package/dist/workflow-catalog.js +0 -59
- package/dist/workflow-catalog.test.d.ts +0 -1
- package/dist/workflow-catalog.test.js +0 -29
- package/loops/workflows/agent-direct.md +0 -375
- package/loops/workflows/agent-propose.md +0 -342
|
@@ -1,178 +1,208 @@
|
|
|
1
|
-
# Managed by @plainconceptsplatform/workflows. Source: loops/templates/ci/app-ci-node-monorepo.yml. Update with `workflows update --force`; consumer edits may be overwritten.
|
|
2
|
-
name: "App: CI (Node monorepo)"
|
|
3
|
-
|
|
4
|
-
on:
|
|
5
|
-
pull_request:
|
|
6
|
-
schedule:
|
|
7
|
-
- cron: "0 6 * * 1"
|
|
8
|
-
workflow_dispatch:
|
|
9
|
-
|
|
10
|
-
env:
|
|
11
|
-
NODE_VERSION: "22"
|
|
12
|
-
PNPM_VERSION: "10"
|
|
13
|
-
WEB_PACKAGE: "@
|
|
14
|
-
DESKTOP_PACKAGE: "@
|
|
15
|
-
MOBILE_PACKAGE: "@
|
|
16
|
-
WEB_EXPORT_PATH: apps/web/out
|
|
17
|
-
PLAYWRIGHT_REPORT_PATH: apps/web/playwright-report
|
|
18
|
-
DESKTOP_MAIN_PATH: apps/desktop/out/main/index.js
|
|
19
|
-
DESKTOP_PRELOAD_PATH: apps/desktop/out/preload/index.cjs
|
|
20
|
-
DESKTOP_PRELOAD_BRIDGE_PATTERN: exposeInMainWorld
|
|
21
|
-
MOBILE_IOS_PATH: apps/mobile/ios
|
|
22
|
-
MOBILE_ANDROID_PATH: apps/mobile/android
|
|
23
|
-
WEB_ARTIFACT_NAME: web-export
|
|
24
|
-
PLAYWRIGHT_ARTIFACT_NAME: playwright-report
|
|
25
|
-
TRUFFLEHOG_IMAGE: "trufflesecurity/trufflehog:latest"
|
|
26
|
-
SEMGREP_IMAGE: "semgrep/semgrep:1.168.0"
|
|
27
|
-
SBOM_ARTIFACT_NAME:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- uses:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- run: pnpm
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- uses:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- run: pnpm --
|
|
62
|
-
- run: pnpm --filter "$WEB_PACKAGE" run
|
|
63
|
-
- run: pnpm --filter "$WEB_PACKAGE" run
|
|
64
|
-
- run: pnpm --filter "$WEB_PACKAGE" run
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
runs-on:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
- uses:
|
|
80
|
-
with:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- uses: actions/
|
|
85
|
-
with:
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
- run: pnpm --filter "$
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
1
|
+
# Managed by @plainconceptsplatform/workflows. Source: loops/templates/ci/app-ci-node-monorepo.yml. Update with `workflows update --force`; consumer edits may be overwritten.
|
|
2
|
+
name: "App: CI (Node monorepo)"
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
schedule:
|
|
7
|
+
- cron: "0 6 * * 1"
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
NODE_VERSION: "22"
|
|
12
|
+
PNPM_VERSION: "10"
|
|
13
|
+
WEB_PACKAGE: "@app/web"
|
|
14
|
+
DESKTOP_PACKAGE: "@app/desktop"
|
|
15
|
+
MOBILE_PACKAGE: "@app/mobile"
|
|
16
|
+
WEB_EXPORT_PATH: apps/web/out
|
|
17
|
+
PLAYWRIGHT_REPORT_PATH: apps/web/playwright-report
|
|
18
|
+
DESKTOP_MAIN_PATH: apps/desktop/out/main/index.js
|
|
19
|
+
DESKTOP_PRELOAD_PATH: apps/desktop/out/preload/index.cjs
|
|
20
|
+
DESKTOP_PRELOAD_BRIDGE_PATTERN: exposeInMainWorld
|
|
21
|
+
MOBILE_IOS_PATH: apps/mobile/ios
|
|
22
|
+
MOBILE_ANDROID_PATH: apps/mobile/android
|
|
23
|
+
WEB_ARTIFACT_NAME: web-export
|
|
24
|
+
PLAYWRIGHT_ARTIFACT_NAME: playwright-report
|
|
25
|
+
TRUFFLEHOG_IMAGE: "trufflesecurity/trufflehog:latest"
|
|
26
|
+
SEMGREP_IMAGE: "semgrep/semgrep:1.168.0"
|
|
27
|
+
SBOM_ARTIFACT_NAME: app-sbom.cyclonedx.json
|
|
28
|
+
MUTATION_THRESHOLD: "60"
|
|
29
|
+
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
|
|
33
|
+
concurrency:
|
|
34
|
+
group: ci-${{ github.workflow }}-${{ github.head_ref || github.ref }}
|
|
35
|
+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
36
|
+
|
|
37
|
+
jobs:
|
|
38
|
+
lint:
|
|
39
|
+
name: Lint (Biome)
|
|
40
|
+
if: github.event_name != 'schedule'
|
|
41
|
+
runs-on: agents-arc
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
44
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
45
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
46
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
47
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
48
|
+
- run: pnpm install --frozen-lockfile
|
|
49
|
+
- run: pnpm exec biome check .
|
|
50
|
+
|
|
51
|
+
web:
|
|
52
|
+
name: Web (Next.js static export)
|
|
53
|
+
if: github.event_name != 'schedule'
|
|
54
|
+
runs-on: agents-arc
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
57
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
58
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
59
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
60
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
61
|
+
- run: pnpm install --frozen-lockfile
|
|
62
|
+
- run: pnpm --filter "$WEB_PACKAGE" run typecheck
|
|
63
|
+
- run: pnpm --filter "$WEB_PACKAGE" run test
|
|
64
|
+
- run: pnpm --filter "$WEB_PACKAGE" run lint:fsd
|
|
65
|
+
- run: pnpm --filter "$WEB_PACKAGE" run build
|
|
66
|
+
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
67
|
+
with:
|
|
68
|
+
name: ${{ env.WEB_ARTIFACT_NAME }}
|
|
69
|
+
path: ${{ env.WEB_EXPORT_PATH }}
|
|
70
|
+
retention-days: 3
|
|
71
|
+
if-no-files-found: error
|
|
72
|
+
|
|
73
|
+
mutation-web:
|
|
74
|
+
name: Mutation (web, diff)
|
|
75
|
+
if: github.event_name == 'pull_request'
|
|
76
|
+
runs-on: agents-arc
|
|
77
|
+
timeout-minutes: 25
|
|
78
|
+
steps:
|
|
79
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
80
|
+
with:
|
|
81
|
+
fetch-depth: 0
|
|
82
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
83
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
84
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
85
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
86
|
+
- name: Detect web changes
|
|
87
|
+
id: scope
|
|
88
|
+
run: |
|
|
89
|
+
git fetch origin "$GITHUB_BASE_REF" --depth=1
|
|
90
|
+
if git diff --name-only "origin/$GITHUB_BASE_REF" HEAD | grep -qE "^apps/web/"; then
|
|
91
|
+
echo "run=true" >> "$GITHUB_OUTPUT"
|
|
92
|
+
else
|
|
93
|
+
echo "run=false" >> "$GITHUB_OUTPUT"
|
|
94
|
+
echo "No apps/web changes in this PR; skipping web mutation."
|
|
95
|
+
fi
|
|
96
|
+
- run: pnpm install --frozen-lockfile
|
|
97
|
+
if: steps.scope.outputs.run == 'true'
|
|
98
|
+
- name: StrykerJS (changed files only)
|
|
99
|
+
if: steps.scope.outputs.run == 'true'
|
|
100
|
+
run: pnpm --filter "$WEB_PACKAGE" exec stryker run --since="origin/$GITHUB_BASE_REF"
|
|
101
|
+
|
|
102
|
+
e2e:
|
|
103
|
+
name: E2E (Playwright)
|
|
104
|
+
if: github.event_name != 'schedule'
|
|
105
|
+
needs: web
|
|
106
|
+
runs-on: agents-arc
|
|
107
|
+
steps:
|
|
108
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
109
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
110
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
111
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
112
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
113
|
+
- run: pnpm install --frozen-lockfile
|
|
114
|
+
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
|
115
|
+
with:
|
|
116
|
+
name: ${{ env.WEB_ARTIFACT_NAME }}
|
|
117
|
+
path: ${{ env.WEB_EXPORT_PATH }}
|
|
118
|
+
- run: pnpm --filter "$WEB_PACKAGE" exec playwright install --with-deps chromium webkit
|
|
119
|
+
- run: pnpm --filter "$WEB_PACKAGE" run e2e
|
|
120
|
+
- if: failure()
|
|
121
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
122
|
+
with:
|
|
123
|
+
name: ${{ env.PLAYWRIGHT_ARTIFACT_NAME }}
|
|
124
|
+
path: ${{ env.PLAYWRIGHT_REPORT_PATH }}
|
|
125
|
+
retention-days: 7
|
|
126
|
+
|
|
127
|
+
desktop:
|
|
128
|
+
name: Desktop (Electron)
|
|
129
|
+
if: github.event_name != 'schedule'
|
|
130
|
+
needs: web
|
|
131
|
+
runs-on: agents-arc
|
|
132
|
+
steps:
|
|
133
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
134
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
135
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
136
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
137
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
138
|
+
- run: pnpm install --frozen-lockfile
|
|
139
|
+
- run: pnpm --filter "$DESKTOP_PACKAGE" run typecheck
|
|
140
|
+
- run: pnpm --filter "$DESKTOP_PACKAGE" run build
|
|
141
|
+
- run: |
|
|
142
|
+
test -f "$DESKTOP_MAIN_PATH"
|
|
143
|
+
test -f "$DESKTOP_PRELOAD_PATH"
|
|
144
|
+
grep -q "$DESKTOP_PRELOAD_BRIDGE_PATTERN" "$DESKTOP_PRELOAD_PATH"
|
|
145
|
+
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
|
|
146
|
+
with:
|
|
147
|
+
name: ${{ env.WEB_ARTIFACT_NAME }}
|
|
148
|
+
path: ${{ env.WEB_EXPORT_PATH }}
|
|
149
|
+
- run: pnpm --filter "$DESKTOP_PACKAGE" exec playwright install-deps chromium
|
|
150
|
+
- run: xvfb-run --auto-servernum pnpm --filter "$DESKTOP_PACKAGE" run e2e
|
|
151
|
+
|
|
152
|
+
mobile:
|
|
153
|
+
name: Mobile (Capacitor)
|
|
154
|
+
if: github.event_name != 'schedule'
|
|
155
|
+
runs-on: agents-arc
|
|
156
|
+
steps:
|
|
157
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
158
|
+
- uses: pnpm/action-setup@f40ffcd9367d9f12939873eb1018b921a783ffaa # v4
|
|
159
|
+
with: { version: ${{ env.PNPM_VERSION }}, run_install: false }
|
|
160
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
161
|
+
with: { node-version: ${{ env.NODE_VERSION }}, cache: pnpm }
|
|
162
|
+
- run: pnpm install --frozen-lockfile
|
|
163
|
+
- run: pnpm --filter "$MOBILE_PACKAGE" run typecheck
|
|
164
|
+
- run: |
|
|
165
|
+
if [ -d "$MOBILE_IOS_PATH" ] || [ -d "$MOBILE_ANDROID_PATH" ]; then
|
|
166
|
+
pnpm --filter "$WEB_PACKAGE" run build
|
|
167
|
+
pnpm --filter "$MOBILE_PACKAGE" run sync
|
|
168
|
+
else
|
|
169
|
+
echo "::notice::Native projects absent; skipping Capacitor sync."
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
secret-scan:
|
|
173
|
+
name: Secret scan (TruffleHog)
|
|
174
|
+
runs-on: agents-arc
|
|
175
|
+
steps:
|
|
176
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
177
|
+
- run: docker run --rm -v "${{ github.workspace }}:/repo" "$TRUFFLEHOG_IMAGE" filesystem /repo --only-verified --fail --no-update
|
|
178
|
+
|
|
179
|
+
deps-and-iac-scan:
|
|
180
|
+
name: Dependencies and IaC (Trivy)
|
|
181
|
+
runs-on: agents-arc
|
|
182
|
+
steps:
|
|
183
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
184
|
+
- uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0
|
|
185
|
+
with:
|
|
186
|
+
scan-type: fs
|
|
187
|
+
scanners: vuln,misconfig,secret
|
|
188
|
+
severity: CRITICAL,HIGH
|
|
189
|
+
ignore-unfixed: true
|
|
190
|
+
exit-code: "1"
|
|
191
|
+
format: table
|
|
192
|
+
|
|
193
|
+
sast-scan:
|
|
194
|
+
name: SAST (Semgrep)
|
|
195
|
+
runs-on: agents-arc
|
|
196
|
+
steps:
|
|
197
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
198
|
+
- run: docker run --rm -v "${{ github.workspace }}:/src" -w /src "$SEMGREP_IMAGE" semgrep scan --error --metrics=off --oss-only --disable-version-check --config p/default --config p/security-audit --config p/secrets --config p/typescript --config p/react --exclude-rule yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
|
|
199
|
+
|
|
200
|
+
sbom:
|
|
201
|
+
name: SBOM (CycloneDX)
|
|
202
|
+
runs-on: agents-arc
|
|
203
|
+
steps:
|
|
204
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
205
|
+
- uses: anchore/sbom-action@e22c389904149dbc22b58101806040fa8d37a610 # v0
|
|
206
|
+
with:
|
|
207
|
+
format: cyclonedx-json
|
|
208
|
+
artifact-name: ${{ env.SBOM_ARTIFACT_NAME }}
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
name: Bug report
|
|
2
|
-
description: Report a defect
|
|
3
|
-
labels: ["bug"]
|
|
4
|
-
body:
|
|
5
|
-
- type: markdown
|
|
6
|
-
attributes:
|
|
7
|
-
value: |
|
|
8
|
-
Thanks for reporting. Do **not** include real secrets or production data — use placeholders.
|
|
9
|
-
|
|
10
|
-
For security vulnerabilities, contact the team directly instead of filing a public issue.
|
|
11
|
-
- type: dropdown
|
|
12
|
-
id: severity
|
|
13
|
-
attributes:
|
|
14
|
-
label: Severity
|
|
15
|
-
options:
|
|
16
|
-
- Production-down / data loss
|
|
17
|
-
- Major — broken core flow
|
|
18
|
-
- Minor — broken edge case
|
|
19
|
-
- Cosmetic / polish
|
|
20
|
-
validations:
|
|
21
|
-
required: true
|
|
22
|
-
- type: dropdown
|
|
23
|
-
id: frequency
|
|
24
|
-
attributes:
|
|
25
|
-
label: Frequency
|
|
26
|
-
description: How often does this happen?
|
|
27
|
-
options:
|
|
28
|
-
- Always
|
|
29
|
-
- Intermittent
|
|
30
|
-
- Only once
|
|
31
|
-
validations:
|
|
32
|
-
required: true
|
|
33
|
-
- type: textarea
|
|
34
|
-
id: what-happened
|
|
35
|
-
attributes:
|
|
36
|
-
label: What happened?
|
|
37
|
-
description: A clear description of the bug and its impact.
|
|
38
|
-
validations:
|
|
39
|
-
required: true
|
|
40
|
-
- type: textarea
|
|
41
|
-
id: repro
|
|
42
|
-
attributes:
|
|
43
|
-
label: Steps to reproduce
|
|
44
|
-
description: How can a maintainer reproduce it?
|
|
45
|
-
placeholder: |
|
|
46
|
-
1. Go to ...
|
|
47
|
-
2. Do ...
|
|
48
|
-
3. See error
|
|
49
|
-
validations:
|
|
50
|
-
required: true
|
|
51
|
-
- type: textarea
|
|
52
|
-
id: expected
|
|
53
|
-
attributes:
|
|
54
|
-
label: Expected behavior
|
|
55
|
-
validations:
|
|
56
|
-
required: true
|
|
57
|
-
- type: dropdown
|
|
58
|
-
id: area
|
|
59
|
-
attributes:
|
|
60
|
-
label: Where does it occur?
|
|
61
|
-
options:
|
|
62
|
-
- Backend
|
|
63
|
-
- Frontend
|
|
64
|
-
- Both
|
|
65
|
-
- CLI / tooling
|
|
66
|
-
- Configuration / deployment
|
|
67
|
-
- Documentation
|
|
68
|
-
- Other
|
|
69
|
-
validations:
|
|
70
|
-
required: true
|
|
71
|
-
- type: textarea
|
|
72
|
-
id: acceptance
|
|
73
|
-
attributes:
|
|
74
|
-
label: Acceptance criteria
|
|
75
|
-
description: How will we know it's fixed? A checklist a reviewer can verify (include the test that should turn green).
|
|
76
|
-
placeholder: |
|
|
77
|
-
- [ ] ...
|
|
78
|
-
- [ ] A test that fails before the fix and passes after
|
|
79
|
-
validations:
|
|
80
|
-
required: false
|
|
81
|
-
- type: textarea
|
|
82
|
-
id: open-questions
|
|
83
|
-
attributes:
|
|
84
|
-
label: Open questions
|
|
85
|
-
description: Decisions a maintainer must make before this can be planned. Leave blank if none.
|
|
86
|
-
validations:
|
|
87
|
-
required: false
|
|
88
|
-
- type: textarea
|
|
89
|
-
id: environment
|
|
90
|
-
attributes:
|
|
91
|
-
label: Environment
|
|
92
|
-
description: Local vs deployed, branch/commit, OS, runtime versions if relevant.
|
|
93
|
-
validations:
|
|
94
|
-
required: false
|
|
95
|
-
- type: textarea
|
|
96
|
-
id: logs
|
|
97
|
-
attributes:
|
|
98
|
-
label: Logs / screenshots
|
|
99
|
-
description: Paste relevant logs or screenshots. Redact secrets and PII.
|
|
100
|
-
render: shell
|
|
101
|
-
validations:
|
|
102
|
-
required: false
|
|
103
|
-
- type: textarea
|
|
104
|
-
id: related
|
|
105
|
-
attributes:
|
|
106
|
-
label: Related links
|
|
107
|
-
description: Links to related issues, PRs, discussions, or docs. Leave blank if none.
|
|
108
|
-
validations:
|
|
109
|
-
required: false
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a defect
|
|
3
|
+
labels: ["bug"]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Thanks for reporting. Do **not** include real secrets or production data — use placeholders.
|
|
9
|
+
|
|
10
|
+
For security vulnerabilities, contact the team directly instead of filing a public issue.
|
|
11
|
+
- type: dropdown
|
|
12
|
+
id: severity
|
|
13
|
+
attributes:
|
|
14
|
+
label: Severity
|
|
15
|
+
options:
|
|
16
|
+
- Production-down / data loss
|
|
17
|
+
- Major — broken core flow
|
|
18
|
+
- Minor — broken edge case
|
|
19
|
+
- Cosmetic / polish
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
- type: dropdown
|
|
23
|
+
id: frequency
|
|
24
|
+
attributes:
|
|
25
|
+
label: Frequency
|
|
26
|
+
description: How often does this happen?
|
|
27
|
+
options:
|
|
28
|
+
- Always
|
|
29
|
+
- Intermittent
|
|
30
|
+
- Only once
|
|
31
|
+
validations:
|
|
32
|
+
required: true
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: what-happened
|
|
35
|
+
attributes:
|
|
36
|
+
label: What happened?
|
|
37
|
+
description: A clear description of the bug and its impact.
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
- type: textarea
|
|
41
|
+
id: repro
|
|
42
|
+
attributes:
|
|
43
|
+
label: Steps to reproduce
|
|
44
|
+
description: How can a maintainer reproduce it?
|
|
45
|
+
placeholder: |
|
|
46
|
+
1. Go to ...
|
|
47
|
+
2. Do ...
|
|
48
|
+
3. See error
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: expected
|
|
53
|
+
attributes:
|
|
54
|
+
label: Expected behavior
|
|
55
|
+
validations:
|
|
56
|
+
required: true
|
|
57
|
+
- type: dropdown
|
|
58
|
+
id: area
|
|
59
|
+
attributes:
|
|
60
|
+
label: Where does it occur?
|
|
61
|
+
options:
|
|
62
|
+
- Backend
|
|
63
|
+
- Frontend
|
|
64
|
+
- Both
|
|
65
|
+
- CLI / tooling
|
|
66
|
+
- Configuration / deployment
|
|
67
|
+
- Documentation
|
|
68
|
+
- Other
|
|
69
|
+
validations:
|
|
70
|
+
required: true
|
|
71
|
+
- type: textarea
|
|
72
|
+
id: acceptance
|
|
73
|
+
attributes:
|
|
74
|
+
label: Acceptance criteria
|
|
75
|
+
description: How will we know it's fixed? A checklist a reviewer can verify (include the test that should turn green).
|
|
76
|
+
placeholder: |
|
|
77
|
+
- [ ] ...
|
|
78
|
+
- [ ] A test that fails before the fix and passes after
|
|
79
|
+
validations:
|
|
80
|
+
required: false
|
|
81
|
+
- type: textarea
|
|
82
|
+
id: open-questions
|
|
83
|
+
attributes:
|
|
84
|
+
label: Open questions
|
|
85
|
+
description: Decisions a maintainer must make before this can be planned. Leave blank if none.
|
|
86
|
+
validations:
|
|
87
|
+
required: false
|
|
88
|
+
- type: textarea
|
|
89
|
+
id: environment
|
|
90
|
+
attributes:
|
|
91
|
+
label: Environment
|
|
92
|
+
description: Local vs deployed, branch/commit, OS, runtime versions if relevant.
|
|
93
|
+
validations:
|
|
94
|
+
required: false
|
|
95
|
+
- type: textarea
|
|
96
|
+
id: logs
|
|
97
|
+
attributes:
|
|
98
|
+
label: Logs / screenshots
|
|
99
|
+
description: Paste relevant logs or screenshots. Redact secrets and PII.
|
|
100
|
+
render: shell
|
|
101
|
+
validations:
|
|
102
|
+
required: false
|
|
103
|
+
- type: textarea
|
|
104
|
+
id: related
|
|
105
|
+
attributes:
|
|
106
|
+
label: Related links
|
|
107
|
+
description: Links to related issues, PRs, discussions, or docs. Leave blank if none.
|
|
108
|
+
validations:
|
|
109
|
+
required: false
|