code-foundry 0.24.1 → 0.26.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.
@@ -0,0 +1,21 @@
1
+ name: Security
2
+
3
+ on:
4
+ push:
5
+ branches: [main, staging]
6
+ pull_request:
7
+ branches: [staging]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ security:
15
+ name: Security
16
+ uses: ./.github/workflows/security.yml
17
+ with:
18
+ runtime-repository: 0xPlayerOne/code-foundry
19
+ runtime-ref: v0.22.0
20
+ runner: ubuntu-slim
21
+ secrets: inherit
@@ -1,22 +1,253 @@
1
- name: Test
1
+ name: Code Foundry Test
2
2
 
3
3
  on:
4
- push:
5
- branches: [main, staging]
6
- pull_request:
7
- branches: [staging]
8
- workflow_dispatch:
4
+ workflow_call:
5
+ inputs:
6
+ runtime-repository:
7
+ description: Repository containing the Code Foundry runtime.
8
+ required: false
9
+ type: string
10
+ default: 0xPlayerOne/code-foundry
11
+ runtime-ref:
12
+ description: Code Foundry runtime tag or ref.
13
+ required: false
14
+ type: string
15
+ default: v0.20.2
16
+ runner:
17
+ description: Runner used by non-unit test jobs.
18
+ required: false
19
+ type: string
20
+ default: ubuntu-latest
21
+ unit-runner:
22
+ description: Runner used by unit tests.
23
+ required: false
24
+ type: string
25
+ default: ubuntu-slim
9
26
 
10
27
  permissions:
11
28
  contents: read
12
29
 
30
+ env:
31
+ TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
32
+ TURBO_TEAM: ${{ vars.TURBO_TEAM }}
33
+ REPO_FOUNDRY_PROFILE: ${{ vars.REPO_FOUNDRY_PROFILE }}
34
+ REPO_FOUNDRY_LANGUAGES: ${{ vars.REPO_FOUNDRY_LANGUAGES }}
35
+ REPO_FOUNDRY_FEATURES: ${{ vars.REPO_FOUNDRY_FEATURES }}
36
+ REPO_FOUNDRY_PACKAGE_MANAGER: ${{ vars.REPO_FOUNDRY_PACKAGE_MANAGER }}
37
+ REPO_FOUNDRY_RUNNER: ${{ vars.REPO_FOUNDRY_RUNNER }}
38
+ REPO_FOUNDRY_CACHE_PACKAGES: ${{ vars.REPO_FOUNDRY_CACHE_PACKAGES || 'auto' }}
39
+ REPO_FOUNDRY_CACHE_BUILD: ${{ vars.REPO_FOUNDRY_CACHE_BUILD || 'auto' }}
40
+ REPO_FOUNDRY_BASE_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before || '' }}
41
+
42
+ concurrency:
43
+ group: ${{ github.workflow }}-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.event.pull_request.head.ref || github.ref_name }}
44
+ cancel-in-progress: true
45
+
13
46
  jobs:
14
- test:
15
- name: Test
16
- uses: 0xPlayerOne/code-foundry/.github/workflows/reusable-test.yml@v0.22.0
17
- with:
18
- runtime-repository: 0xPlayerOne/code-foundry
19
- runtime-ref: v0.22.0
20
- runner: ubuntu-latest
21
- unit-runner: ubuntu-slim
22
- secrets: inherit
47
+ unit:
48
+ name: Unit
49
+ runs-on: ${{ inputs.unit-runner }}
50
+ timeout-minutes: 30
51
+ steps:
52
+ - name: Checkout
53
+ uses: actions/checkout@v7
54
+ with:
55
+ fetch-depth: 2
56
+ - name: Runtime
57
+ uses: actions/checkout@v7
58
+ with:
59
+ repository: ${{ inputs.runtime-repository }}
60
+ ref: ${{ inputs.runtime-ref }}
61
+ path: .code-foundry
62
+ sparse-checkout: |
63
+ .github/actions
64
+ .github/scripts
65
+ - name: Install runtime
66
+ run: |
67
+ mkdir -p .github/actions .github/scripts
68
+ cp -R .code-foundry/.github/actions/. .github/actions/
69
+ cp -R .code-foundry/.github/scripts/. .github/scripts/
70
+ - name: Detect
71
+ id: applicability
72
+ run: bash .github/scripts/ci.sh task_profile unit >> "$GITHUB_OUTPUT"
73
+ - name: Setup
74
+ if: steps.applicability.outputs.applicable == 'true'
75
+ uses: ./.github/actions/setup
76
+ with:
77
+ install: true
78
+ install-javascript: ${{ steps.applicability.outputs.javascript == 'true' }}
79
+ install-python: ${{ steps.applicability.outputs.python == 'true' }}
80
+ install-rust: ${{ steps.applicability.outputs.rust == 'true' }}
81
+ cache-build: false
82
+ cache-environment: false
83
+ cache-packages: ${{ vars.REPO_FOUNDRY_CACHE_PACKAGES || 'auto' }}
84
+ task: unit
85
+ task-javascript: ${{ steps.applicability.outputs.javascript }}
86
+ task-python: ${{ steps.applicability.outputs.python }}
87
+ task-rust: ${{ steps.applicability.outputs.rust }}
88
+ - name: Unit
89
+ if: steps.applicability.outputs.applicable == 'true'
90
+ run: bash .github/scripts/ci.sh unit
91
+ - name: Upload coverage
92
+ if: >-
93
+ always() &&
94
+ steps.applicability.outputs.applicable == 'true' &&
95
+ hashFiles('coverage/**', 'htmlcov/**', '.coverage*', 'target/llvm-cov/**') != ''
96
+ uses: actions/upload-artifact@v7
97
+ with:
98
+ name: coverage-unit-${{ github.run_id }}
99
+ path: |
100
+ coverage/**
101
+ htmlcov/**
102
+ .coverage*
103
+ target/llvm-cov/**
104
+ compression-level: 1
105
+ if-no-files-found: ignore
106
+ retention-days: 14
107
+
108
+ integration:
109
+ name: Integration
110
+ runs-on: ${{ inputs.runner }}
111
+ timeout-minutes: 30
112
+ steps:
113
+ - name: Checkout
114
+ uses: actions/checkout@v7
115
+ with:
116
+ fetch-depth: 2
117
+ - name: Runtime
118
+ uses: actions/checkout@v7
119
+ with:
120
+ repository: ${{ inputs.runtime-repository }}
121
+ ref: ${{ inputs.runtime-ref }}
122
+ path: .code-foundry
123
+ sparse-checkout: |
124
+ .github/actions
125
+ .github/scripts
126
+ - name: Install runtime
127
+ run: |
128
+ mkdir -p .github/actions .github/scripts
129
+ cp -R .code-foundry/.github/actions/. .github/actions/
130
+ cp -R .code-foundry/.github/scripts/. .github/scripts/
131
+ - name: Detect
132
+ id: applicability
133
+ run: bash .github/scripts/ci.sh task_profile integration >> "$GITHUB_OUTPUT"
134
+ - name: Setup
135
+ if: steps.applicability.outputs.applicable == 'true'
136
+ uses: ./.github/actions/setup
137
+ with:
138
+ install: true
139
+ install-javascript: ${{ steps.applicability.outputs.javascript == 'true' }}
140
+ install-python: ${{ steps.applicability.outputs.python == 'true' }}
141
+ install-rust: ${{ steps.applicability.outputs.rust == 'true' }}
142
+ cache-build: ${{ steps.applicability.outputs.rust == 'true' }}
143
+ cache-environment: false
144
+ cache-save: ${{ github.event_name == 'push' }}
145
+ task: integration
146
+ task-javascript: ${{ steps.applicability.outputs.javascript }}
147
+ task-python: ${{ steps.applicability.outputs.python }}
148
+ task-rust: ${{ steps.applicability.outputs.rust }}
149
+ - name: Integration
150
+ if: steps.applicability.outputs.applicable == 'true'
151
+ run: bash .github/scripts/ci.sh integration
152
+
153
+ e2e:
154
+ name: E2E
155
+ runs-on: ${{ inputs.runner }}
156
+ timeout-minutes: 45
157
+ steps:
158
+ - name: Checkout
159
+ uses: actions/checkout@v7
160
+ with:
161
+ fetch-depth: 2
162
+ - name: Runtime
163
+ uses: actions/checkout@v7
164
+ with:
165
+ repository: ${{ inputs.runtime-repository }}
166
+ ref: ${{ inputs.runtime-ref }}
167
+ path: .code-foundry
168
+ sparse-checkout: |
169
+ .github/actions
170
+ .github/scripts
171
+ - name: Install runtime
172
+ run: |
173
+ mkdir -p .github/actions .github/scripts
174
+ cp -R .code-foundry/.github/actions/. .github/actions/
175
+ cp -R .code-foundry/.github/scripts/. .github/scripts/
176
+ - name: Detect
177
+ id: applicability
178
+ run: bash .github/scripts/ci.sh task_profile e2e >> "$GITHUB_OUTPUT"
179
+ - name: Cache browser binaries
180
+ if: steps.applicability.outputs.applicable == 'true' && steps.applicability.outputs.browser == 'true'
181
+ uses: ./.github/actions/cache
182
+ with:
183
+ save: ${{ github.event_name == 'push' }}
184
+ path: |
185
+ ~/.cache/ms-playwright
186
+ ~/.cache/Cypress
187
+ ~/.cache/puppeteer
188
+ key: ${{ runner.os }}-e2e-browsers-${{ hashFiles('**/package.json', '**/bun.lock', '**/bun.lockb', '**/pnpm-lock.yaml', '**/yarn.lock', '**/package-lock.json', '**/playwright.config.*', '**/cypress.config.*') }}
189
+ restore-keys: |
190
+ ${{ runner.os }}-e2e-browsers-
191
+ - name: Setup
192
+ if: steps.applicability.outputs.applicable == 'true'
193
+ uses: ./.github/actions/setup
194
+ with:
195
+ install: true
196
+ install-javascript: ${{ steps.applicability.outputs.javascript == 'true' }}
197
+ install-python: ${{ steps.applicability.outputs.python == 'true' }}
198
+ install-rust: ${{ steps.applicability.outputs.rust == 'true' }}
199
+ cache-build: false
200
+ cache-environment: false
201
+ cache-save: ${{ github.event_name == 'push' }}
202
+ task: e2e
203
+ task-javascript: ${{ steps.applicability.outputs.javascript }}
204
+ task-python: ${{ steps.applicability.outputs.python }}
205
+ task-rust: ${{ steps.applicability.outputs.rust }}
206
+ - name: E2E
207
+ if: steps.applicability.outputs.applicable == 'true'
208
+ run: bash .github/scripts/ci.sh e2e
209
+
210
+ smoke:
211
+ name: Smoke
212
+ runs-on: ${{ inputs.runner }}
213
+ timeout-minutes: 15
214
+ steps:
215
+ - name: Checkout
216
+ uses: actions/checkout@v7
217
+ with:
218
+ fetch-depth: 2
219
+ - name: Runtime
220
+ uses: actions/checkout@v7
221
+ with:
222
+ repository: ${{ inputs.runtime-repository }}
223
+ ref: ${{ inputs.runtime-ref }}
224
+ path: .code-foundry
225
+ sparse-checkout: |
226
+ .github/actions
227
+ .github/scripts
228
+ - name: Install runtime
229
+ run: |
230
+ mkdir -p .github/actions .github/scripts
231
+ cp -R .code-foundry/.github/actions/. .github/actions/
232
+ cp -R .code-foundry/.github/scripts/. .github/scripts/
233
+ - name: Detect
234
+ id: applicability
235
+ run: bash .github/scripts/ci.sh task_profile smoke >> "$GITHUB_OUTPUT"
236
+ - name: Setup
237
+ if: steps.applicability.outputs.applicable == 'true'
238
+ uses: ./.github/actions/setup
239
+ with:
240
+ install: true
241
+ install-javascript: ${{ steps.applicability.outputs.javascript == 'true' }}
242
+ install-python: ${{ steps.applicability.outputs.python == 'true' }}
243
+ install-rust: ${{ steps.applicability.outputs.rust == 'true' }}
244
+ cache-build: false
245
+ cache-environment: false
246
+ cache-save: ${{ github.event_name == 'push' }}
247
+ task: smoke
248
+ task-javascript: ${{ steps.applicability.outputs.javascript }}
249
+ task-python: ${{ steps.applicability.outputs.python }}
250
+ task-rust: ${{ steps.applicability.outputs.rust }}
251
+ - name: Smoke
252
+ if: steps.applicability.outputs.applicable == 'true'
253
+ run: bash .github/scripts/ci.sh smoke
@@ -0,0 +1,22 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [main, staging]
6
+ pull_request:
7
+ branches: [staging]
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ test:
15
+ name: Test
16
+ uses: ./.github/workflows/test.yml
17
+ with:
18
+ runtime-repository: 0xPlayerOne/code-foundry
19
+ runtime-ref: v0.22.0
20
+ runner: ubuntu-latest
21
+ unit-runner: ubuntu-slim
22
+ secrets: inherit
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.26.0](https://github.com/0xPlayerOne/code-foundry/compare/v0.25.0...v0.26.0) (2026-07-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * default new repositories to gplv3 ([e200135](https://github.com/0xPlayerOne/code-foundry/commit/e200135939779693eb73a64aaf3587eccdc36ffc))
9
+
10
+ ## [0.25.0](https://github.com/0xPlayerOne/code-foundry/compare/v0.24.1...v0.25.0) (2026-07-28)
11
+
12
+
13
+ ### Features
14
+
15
+ * simplify reusable workflow layout ([293b2a8](https://github.com/0xPlayerOne/code-foundry/commit/293b2a877500853778f311763cd4176e86f0b4f8))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * use local self workflow references ([31ea5a5](https://github.com/0xPlayerOne/code-foundry/commit/31ea5a5a621039afd8e19febe9d2a9f814c9d6fa))
21
+
3
22
  ## [0.24.1](https://github.com/0xPlayerOne/code-foundry/compare/v0.24.0...v0.24.1) (2026-07-28)
4
23
 
5
24
 
package/README.md CHANGED
@@ -56,8 +56,9 @@ The generated configuration is the one place to control the baseline. See
56
56
  guide and [Initialization and synchronization](docs/INITIALIZATION.md) for
57
57
  the two-command workflow.
58
58
 
59
- New repositories default to AGPL-3.0-or-later. Synchronization preserves an
60
- existing license unless a replacement is explicitly selected. Authored
59
+ New repositories default to GPL-3.0-or-later. Existing projects preserve an
60
+ authored license unless a replacement is explicitly selected. Our maintained
61
+ repositories explicitly select AGPL-3.0-or-later. Authored
61
62
  documentation, application files, custom workflows, and existing `.mise.toml`
62
63
  files are preserved by default.
63
64
 
@@ -36,7 +36,7 @@ repository manifests and source
36
36
  | `runtime_ref` | tag or branch | Reusable workflow version |
37
37
  | `release_type` | `node`, `python`, `rust`, `simple`, `none` | Release strategy |
38
38
  | `npm_publish` | `true` or `false` | Opt into npm publication |
39
- | `license` | license name, `preserve`, `none` | License policy |
39
+ | `license` | `gpl-3.0-or-later`, `agpl-3.0-or-later`, `mit`, `preserve`, `none` | License policy; new repositories default to GPLv3 |
40
40
  | `runner` fields | GitHub runner names | Per-workflow runner policy |
41
41
 
42
42
  Supported features are `ci`, `codeql`, `security`, `test`, `draft-pr`,
@@ -25,6 +25,9 @@ manifests, lockfiles, source extensions, workspace metadata, and existing
25
25
  project scripts. The generated values are explicit, so later syncs are stable
26
26
  until a maintainer changes the file.
27
27
 
28
+ New repositories receive the GNU GPLv3. Existing repositories with an authored
29
+ `LICENSE` keep that license unless the generated configuration is changed.
30
+
28
31
  ## Runtime selection
29
32
 
30
33
  Workflow callers use `runtime_repository` and `runtime_ref` from
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "0.24.1",
3
+ "version": "0.26.0",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -1,184 +0,0 @@
1
- name: Code Foundry CI
2
-
3
- on:
4
- workflow_call:
5
- inputs:
6
- runtime-repository:
7
- description: Repository containing the Code Foundry runtime.
8
- required: false
9
- type: string
10
- default: 0xPlayerOne/code-foundry
11
- runtime-ref:
12
- description: Code Foundry runtime tag or ref.
13
- required: false
14
- type: string
15
- default: v0.20.2
16
- runner:
17
- description: Runner used by CI jobs.
18
- required: false
19
- type: string
20
- default: ubuntu-latest
21
-
22
- permissions:
23
- contents: read
24
-
25
- env:
26
- TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
27
- TURBO_TEAM: ${{ vars.TURBO_TEAM }}
28
- REPO_FOUNDRY_PROFILE: ${{ vars.REPO_FOUNDRY_PROFILE }}
29
- REPO_FOUNDRY_LANGUAGES: ${{ vars.REPO_FOUNDRY_LANGUAGES }}
30
- REPO_FOUNDRY_FEATURES: ${{ vars.REPO_FOUNDRY_FEATURES }}
31
- REPO_FOUNDRY_PACKAGE_MANAGER: ${{ vars.REPO_FOUNDRY_PACKAGE_MANAGER }}
32
- REPO_FOUNDRY_RUNNER: ${{ vars.REPO_FOUNDRY_RUNNER }}
33
- REPO_FOUNDRY_CACHE_PACKAGES: ${{ vars.REPO_FOUNDRY_CACHE_PACKAGES || 'auto' }}
34
- REPO_FOUNDRY_CACHE_BUILD: ${{ vars.REPO_FOUNDRY_CACHE_BUILD || 'auto' }}
35
- REPO_FOUNDRY_BASE_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before || '' }}
36
-
37
- concurrency:
38
- group: ${{ github.workflow }}-${{ github.event.pull_request.head.repo.full_name || github.repository }}-${{ github.event.pull_request.head.ref || github.ref_name }}
39
- cancel-in-progress: true
40
-
41
- jobs:
42
- format:
43
- name: Format
44
- runs-on: ${{ inputs.runner }}
45
- steps:
46
- - name: Checkout
47
- uses: actions/checkout@v7
48
- - name: Runtime
49
- uses: actions/checkout@v7
50
- with:
51
- repository: ${{ inputs.runtime-repository }}
52
- ref: ${{ inputs.runtime-ref }}
53
- path: .code-foundry
54
- sparse-checkout: |
55
- .github/actions
56
- .github/scripts
57
- - name: Install runtime
58
- run: |
59
- mkdir -p .github/actions .github/scripts
60
- cp -R .code-foundry/.github/actions/. .github/actions/
61
- cp -R .code-foundry/.github/scripts/. .github/scripts/
62
- - name: Detect
63
- id: applicability
64
- run: bash .github/scripts/ci.sh should_run format >> "$GITHUB_OUTPUT"
65
- - name: Fast path
66
- if: steps.applicability.outputs.applicable == 'true'
67
- run: bash .github/scripts/format-fast-path.sh
68
- - name: Setup
69
- if: steps.applicability.outputs.applicable == 'true'
70
- uses: ./.github/actions/setup
71
- with:
72
- install: 'false'
73
- cache-format: 'true'
74
- cache-lint: 'false'
75
- cache-build: 'false'
76
- task: format
77
- task-javascript: 'true'
78
- task-python: 'false'
79
- task-rust: 'false'
80
- - name: Format
81
- if: steps.applicability.outputs.applicable == 'true'
82
- run: bash .github/scripts/ci.sh format
83
-
84
- lint:
85
- name: Lint
86
- runs-on: ${{ inputs.runner }}
87
- steps:
88
- - name: Checkout
89
- uses: actions/checkout@v7
90
- - name: Runtime
91
- uses: actions/checkout@v7
92
- with:
93
- repository: ${{ inputs.runtime-repository }}
94
- ref: ${{ inputs.runtime-ref }}
95
- path: .code-foundry
96
- sparse-checkout: |
97
- .github/actions
98
- .github/scripts
99
- - name: Install runtime
100
- run: |
101
- mkdir -p .github/actions .github/scripts
102
- cp -R .code-foundry/.github/actions/. .github/actions/
103
- cp -R .code-foundry/.github/scripts/. .github/scripts/
104
- - name: Detect
105
- id: applicability
106
- run: bash .github/scripts/ci.sh should_run lint >> "$GITHUB_OUTPUT"
107
- - name: Setup
108
- if: steps.applicability.outputs.applicable == 'true'
109
- uses: ./.github/actions/setup
110
- with:
111
- install: 'true'
112
- cache-lint: 'true'
113
- task: lint
114
- - name: Lint
115
- if: steps.applicability.outputs.applicable == 'true'
116
- run: bash .github/scripts/ci.sh lint
117
-
118
- type-check:
119
- name: Type-Check
120
- runs-on: ${{ inputs.runner }}
121
- steps:
122
- - name: Checkout
123
- uses: actions/checkout@v7
124
- - name: Runtime
125
- uses: actions/checkout@v7
126
- with:
127
- repository: ${{ inputs.runtime-repository }}
128
- ref: ${{ inputs.runtime-ref }}
129
- path: .code-foundry
130
- sparse-checkout: |
131
- .github/actions
132
- .github/scripts
133
- - name: Install runtime
134
- run: |
135
- mkdir -p .github/actions .github/scripts
136
- cp -R .code-foundry/.github/actions/. .github/actions/
137
- cp -R .code-foundry/.github/scripts/. .github/scripts/
138
- - name: Detect
139
- id: applicability
140
- run: bash .github/scripts/ci.sh should_run type_check >> "$GITHUB_OUTPUT"
141
- - name: Setup
142
- if: steps.applicability.outputs.applicable == 'true'
143
- uses: ./.github/actions/setup
144
- with:
145
- install: 'true'
146
- cache-build: 'true'
147
- task: type_check
148
- - name: Type-Check
149
- if: steps.applicability.outputs.applicable == 'true'
150
- run: bash .github/scripts/ci.sh type_check
151
-
152
- build:
153
- name: Build
154
- runs-on: ${{ inputs.runner }}
155
- steps:
156
- - name: Checkout
157
- uses: actions/checkout@v7
158
- - name: Runtime
159
- uses: actions/checkout@v7
160
- with:
161
- repository: ${{ inputs.runtime-repository }}
162
- ref: ${{ inputs.runtime-ref }}
163
- path: .code-foundry
164
- sparse-checkout: |
165
- .github/actions
166
- .github/scripts
167
- - name: Install runtime
168
- run: |
169
- mkdir -p .github/actions .github/scripts
170
- cp -R .code-foundry/.github/actions/. .github/actions/
171
- cp -R .code-foundry/.github/scripts/. .github/scripts/
172
- - name: Detect
173
- id: applicability
174
- run: bash .github/scripts/ci.sh should_run build >> "$GITHUB_OUTPUT"
175
- - name: Setup
176
- if: steps.applicability.outputs.applicable == 'true'
177
- uses: ./.github/actions/setup
178
- with:
179
- install: 'true'
180
- cache-build: 'true'
181
- task: build
182
- - name: Build
183
- if: steps.applicability.outputs.applicable == 'true'
184
- run: bash .github/scripts/ci.sh build