create-forge 0.2.1__tar.gz → 0.3.0__tar.gz

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 (73) hide show
  1. {create_forge-0.2.1 → create_forge-0.3.0}/CHANGELOG.md +35 -0
  2. {create_forge-0.2.1 → create_forge-0.3.0}/PKG-INFO +106 -11
  3. {create_forge-0.2.1 → create_forge-0.3.0}/README.md +104 -9
  4. {create_forge-0.2.1 → create_forge-0.3.0}/docs/adr/README.md +12 -0
  5. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/README.md +21 -2
  6. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/08-reference-archetype-validation/README.md +5 -1
  7. create_forge-0.3.0/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +62 -0
  8. create_forge-0.3.0/docs/roadmap-v2/README.md +55 -0
  9. create_forge-0.3.0/docs/roadmap-v2/roadmap/10-data-science-architecture-contract/README.md +61 -0
  10. create_forge-0.3.0/docs/roadmap-v2/roadmap/11-reusable-data-science-capabilities/README.md +59 -0
  11. create_forge-0.3.0/docs/roadmap-v2/roadmap/12-data-science-archetype/README.md +60 -0
  12. create_forge-0.3.0/docs/roadmap-v2/roadmap/13-data-science-cli-integration/README.md +97 -0
  13. create_forge-0.3.0/docs/roadmap-v2/roadmap/14-data-science-validation-and-rollout/README.md +92 -0
  14. create_forge-0.3.0/examples/README.md +91 -0
  15. {create_forge-0.2.1 → create_forge-0.3.0}/pyproject.toml +18 -12
  16. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/cli.py +506 -35
  17. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/compat.py +18 -8
  18. create_forge-0.3.0/src/create_forge/pipeline.py +310 -0
  19. create_forge-0.3.0/src/create_forge/prompts.py +601 -0
  20. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/runner.py +25 -11
  21. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/spec.py +169 -1
  22. {create_forge-0.2.1 → create_forge-0.3.0}/tests/conftest.py +42 -0
  23. create_forge-0.3.0/tests/installed_client.py +307 -0
  24. create_forge-0.3.0/tests/test_archetype_parity.py +215 -0
  25. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_cli.py +389 -32
  26. create_forge-0.3.0/tests/test_component_selection.py +974 -0
  27. create_forge-0.3.0/tests/test_data_science_pipeline.py +538 -0
  28. create_forge-0.3.0/tests/test_downstream_reference.py +397 -0
  29. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_e2e_engine_generation.py +94 -12
  30. create_forge-0.3.0/tests/test_e2e_installed_data_science.py +478 -0
  31. create_forge-0.3.0/tests/test_e2e_installed_rollout.py +712 -0
  32. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_engine_adapter.py +35 -15
  33. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_engine_contract.py +90 -5
  34. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_engine_cross_repository.py +90 -9
  35. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_pipeline.py +158 -16
  36. create_forge-0.3.0/tests/test_policy_hook.py +177 -0
  37. create_forge-0.3.0/tests/test_prompts.py +497 -0
  38. create_forge-0.3.0/tests/test_reference_client_boundary.py +87 -0
  39. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_runner.py +66 -0
  40. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_update.py +66 -3
  41. create_forge-0.2.1/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +0 -25
  42. create_forge-0.2.1/src/create_forge/pipeline.py +0 -166
  43. create_forge-0.2.1/src/create_forge/prompts.py +0 -231
  44. create_forge-0.2.1/tests/test_archetype_parity.py +0 -161
  45. create_forge-0.2.1/tests/test_prompts.py +0 -187
  46. {create_forge-0.2.1 → create_forge-0.3.0}/.gitignore +0 -0
  47. {create_forge-0.2.1 → create_forge-0.3.0}/LICENSE +0 -0
  48. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/00-governance-and-principles/README.md +0 -0
  49. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/01-python-core/README.md +0 -0
  50. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/02-developer-experience/README.md +0 -0
  51. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/03-quality-and-ci/README.md +0 -0
  52. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/04-runtime-and-configuration/README.md +0 -0
  53. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/05-security-and-supply-chain/README.md +0 -0
  54. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/06-extension-and-composition-contract/README.md +0 -0
  55. {create_forge-0.2.1 → create_forge-0.3.0}/docs/roadmap-v1/roadmap/07-forge-cli-integration/README.md +0 -0
  56. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/__init__.py +0 -0
  57. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/config.py +0 -0
  58. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/engine.py +0 -0
  59. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/models.py +0 -0
  60. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/registry.py +0 -0
  61. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/staging.py +0 -0
  62. {create_forge-0.2.1 → create_forge-0.3.0}/src/create_forge/templates.toml +0 -0
  63. {create_forge-0.2.1 → create_forge-0.3.0}/tests/__init__.py +0 -0
  64. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_adr.py +0 -0
  65. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_config.py +0 -0
  66. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_drift.py +0 -0
  67. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_e2e_generation.py +0 -0
  68. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_labels.py +0 -0
  69. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_models.py +0 -0
  70. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_registry.py +0 -0
  71. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_spec.py +0 -0
  72. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_staging.py +0 -0
  73. {create_forge-0.2.1 → create_forge-0.3.0}/tests/test_update_network.py +0 -0
@@ -1,6 +1,41 @@
1
1
  # Changelog
2
2
 
3
3
  Generated by git-cliff from Conventional Commits.
4
+ ## [0.3.0] - 2026-09-05
5
+
6
+ ### Bug Fixes
7
+
8
+ - Handle template clone failures
9
+
10
+ ### Documentation
11
+
12
+ - Link canonical organisation policy model
13
+ - Sync canonical Stage 09 contracts
14
+ - Validate the reference-client boundary
15
+ - Add Data Science CLI roadmap
16
+ - Add Data Science CLI issue plan
17
+ - Link canonical Data Science project shape
18
+ - Link canonical Data Science capability contracts
19
+ - Link production Jupyter capability
20
+ - Link production Scientific Python capability
21
+ - Record forge-template 0.4.0 release
22
+ - Define generic component-selection CLI conventions (#122)
23
+
24
+ ### Features
25
+
26
+ - Define the downstream policy-consumption hook (#97)
27
+ - Add a downstream CLI integration reference (#98)
28
+ - Add dry-run support to update
29
+ - Prompt engine options from discovery, not the registry (#102)
30
+ - Adopt the forge-template 0.4 compatibility line (#121)
31
+ - Select capabilities and platforms from discovery (#123)
32
+ - Collect options for every selected component (#124)
33
+
34
+ ### Testing
35
+
36
+ - Validate the Data Science preview pipeline (#125)
37
+ - Validate installed Data Science generation (#127)
38
+ - Complete the rollout regression and failure matrix (#128)
4
39
  ## [0.2.1] - 2026-08-31
5
40
 
6
41
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: create-forge
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: Scaffold modern Python projects from maintained templates.
5
5
  Project-URL: Homepage, https://github.com/Sandsy09/create-forge
6
6
  Project-URL: Repository, https://github.com/Sandsy09/create-forge
@@ -26,7 +26,7 @@ Requires-Dist: questionary>=2.0
26
26
  Requires-Dist: rich>=13.9
27
27
  Requires-Dist: typer>=0.15
28
28
  Provides-Extra: engine
29
- Requires-Dist: forge-template<0.4,>=0.3.1; extra == 'engine'
29
+ Requires-Dist: forge-template<0.5,>=0.4.1; extra == 'engine'
30
30
  Requires-Dist: uv<0.13,>=0.12; extra == 'engine'
31
31
  Description-Content-Type: text/markdown
32
32
 
@@ -89,6 +89,9 @@ uvx create-forge new "My Lib" --yes \
89
89
  --data build_backend=hatchling \
90
90
  --data versioning=vcs \
91
91
  --data type_checking=both
92
+
93
+ # Validate an update without changing project files
94
+ uvx create-forge update --dry-run
92
95
  ```
93
96
 
94
97
  | Command | What it does |
@@ -102,6 +105,9 @@ uvx create-forge new "My Lib" --yes \
102
105
  Useful flags on `new`: `--template/-t`, `--path/-p`, `--data/-d`, `--yes/-y`,
103
106
  `--ref`, `--dry-run`.
104
107
 
108
+ Useful flags on `update`: `--ref`, `--dry-run`. An update dry run validates the
109
+ requested template update but does not apply it or produce a file-by-file diff.
110
+
105
111
  ## Configuration
106
112
 
107
113
  Optional. Saves retyping the same answers:
@@ -146,6 +152,27 @@ and [component manifest protocol v1](https://github.com/Sandsy09/forge-template/
146
152
  are now implemented behind the canonical
147
153
  [stable template-engine API](https://github.com/Sandsy09/forge-template/blob/main/docs/template-engine-api.md)
148
154
  ([ADR 0029](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0029-stable-template-engine-api.md)).
155
+ The canonical
156
+ [organisation-policy protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md)
157
+ defines how downstream clients resolve component-selection defaults and
158
+ constraints before constructing that effective ProjectSpec. CF-09.01
159
+ ([ADR 0022](docs/adr/0022-downstream-organisation-policy-hook.md)) delivered
160
+ the client-side consumption hook — this repository still resolves no policy
161
+ itself; see the canonical
162
+ [downstream policy-consumption contract](docs/organisation-policy-consumption.md).
163
+ The canonical
164
+ [safe extension contract](https://github.com/Sandsy09/forge-template/blob/main/docs/extension-points.md),
165
+ [organisation-policy fixture](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy-fixtures.md),
166
+ [compatibility policy](https://github.com/Sandsy09/forge-template/blob/main/docs/compatibility-policy.md),
167
+ and [no-copy proof](https://github.com/Sandsy09/forge-template/blob/main/docs/no-copy-inheritance.md)
168
+ complete forge-template's Stage 09 boundary. They deny arbitrary file
169
+ replacement and prove that a client can retain policy/orchestration concerns
170
+ without copying engine content or importing private engine modules. The
171
+ decisions are recorded by forge-template
172
+ [ADRs 0039](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0039-deny-policy-file-overrides.md),
173
+ [0040](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0040-organisation-policy-reference-fixture.md),
174
+ [0041](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0041-forge-blueprint-compatibility-policy.md),
175
+ and [0042](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0042-validate-no-copy-downstream-inheritance.md).
149
176
  The accepted
150
177
  [Library archetype contract](https://github.com/Sandsy09/forge-template/blob/main/docs/library-archetype.md)
151
178
  defines the first production component, implemented on `forge-template/main`
@@ -172,9 +199,13 @@ The engine now also defines in-memory
172
199
  ([ADR 0030](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0030-generated-project-validation.md))
173
200
  before rendered output is returned; `render_project` already calls it before
174
201
  `--engine-preview` receives a result.
175
- This repository now depends on a real, released `forge-template` range —
176
- `>=0.3.1,<0.4`, published to PyPI with `uv>=0.12,<0.13` as the optional
177
- `engine` extra
202
+ This repository depends on a real, released `forge-template` range —
203
+ `>=0.4.1,<0.5`. [ADR 0026](docs/adr/0026-adopt-the-0-4-engine-compatibility-line.md)
204
+ moved it from the first assigned `>=0.3.1,<0.4`, and
205
+ [ADR 0031](docs/adr/0031-adopt-the-reviewed-forge-template-0-4-1-release.md)
206
+ adopted the reviewed `0.4.1` release as its lower bound. It is published to
207
+ PyPI with
208
+ `uv>=0.12,<0.13` as the optional `engine` extra
178
209
  (`pip install 'create-forge[engine]'`; [#9](https://github.com/Sandsy09/create-forge/issues/9),
179
210
  [ADR 0018](docs/adr/0018-pypi-distribution-and-the-first-engine-range.md)) —
180
211
  rather than a development-only pin. That range is reachable only behind
@@ -200,12 +231,76 @@ issue.
200
231
 
201
232
  ## Using this at work
202
233
 
203
- In v0.1.x, organisations needing custom executable templates can fork this
204
- repository, point the bundled registry at their own templates, and maintain it
205
- internally. The accepted target makes a downstream client of the
206
- `forge-template` public engine the preferred route for organisation defaults
207
- and constraints. Forks remain appropriate for genuinely custom executable
208
- template content; see the [integration contract](docs/integration-contract.md).
234
+ The preferred route for organisation defaults, required selections, and
235
+ forbidden selections is a downstream client of the public `forge-template`
236
+ engine, resolving the canonical
237
+ [organisation-policy protocol](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md)
238
+ before constructing a ProjectSpec see the canonical
239
+ [downstream policy-consumption contract](docs/organisation-policy-consumption.md)
240
+ and [ADR 0022](docs/adr/0022-downstream-organisation-policy-hook.md).
241
+ [`examples/downstream_cli.py`](examples/downstream_cli.py) is a runnable,
242
+ second, independent client demonstrating exactly this — no dependency on
243
+ `create-forge` at all — see the canonical
244
+ [downstream client reference](docs/downstream-client-reference.md) and
245
+ [ADR 0023](docs/adr/0023-downstream-client-reference.md).
246
+ [ADR 0024](docs/adr/0024-reference-client-not-framework-dependency.md)
247
+ completes the Stage 09 boundary: `create-forge` is one reference client, not a
248
+ framework dependency for that client, the engine, or generated projects.
249
+
250
+ Forking this repository remains appropriate only for genuinely custom
251
+ executable template content that has no equivalent in the reviewed public
252
+ engine — point the bundled registry at your own templates and maintain the
253
+ fork internally, as v0.1.x always supported. See the
254
+ [integration contract](docs/integration-contract.md) for the full boundary.
255
+
256
+ The [accepted Data Science shape](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-archetype.md)
257
+ is an independent, package-backed, notebook-oriented third archetype. The
258
+ [initial capability contracts](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-capabilities.md)
259
+ define its required reusable Jupyter tooling and independently optional
260
+ Scientific Python stack. FT-11.02 implements Jupyter under [ADR
261
+ 0050](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0050-production-jupyter-capability.md),
262
+ and FT-11.03 implements Scientific Python under [ADR
263
+ 0051](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0051-production-scientific-python-capability.md).
264
+ Stage 11 then validated their production composition, and Stage 12 added and
265
+ validated the `data-science` archetype. The complete five-component catalogue
266
+ is published as
267
+ [`forge-template 0.4.0`](https://github.com/Sandsy09/forge-template/releases/tag/v0.4.0)
268
+ on [PyPI](https://pypi.org/project/forge-template/0.4.0/); its
269
+ [published acceptance evidence](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-validation.md#published-040-release-verification)
270
+ was the immutable provider hand-off to Stage 13.
271
+ [CF-13.01](https://github.com/Sandsy09/create-forge/issues/106)
272
+ ([ADR 0026](docs/adr/0026-adopt-the-0-4-engine-compatibility-line.md)) adopted
273
+ `forge-template>=0.4,<0.5`, so the engine-preview path now discovers all five
274
+ components, and CF-13.02
275
+ ([ADR 0027](docs/adr/0027-generic-component-selection-conventions.md)) fixed
276
+ how they are selected in the canonical
277
+ [component selection contract](docs/component-selection.md). CF-13.03
278
+ ([ADR 0028](docs/adr/0028-discovery-driven-component-selection.md)) implemented
279
+ capability and platform selection behind `--engine-preview`, and CF-13.04
280
+ ([ADR 0029](docs/adr/0029-per-component-option-collection.md)) per-component
281
+ option collection and `--component-option`. CF-13.05
282
+ ([ADR 0030](docs/adr/0030-data-science-preview-pipeline-validation.md))
283
+ validated the Data Science composition through the shared pipeline against the
284
+ released engine, closing **Stage 13**; Stage 14 then takes the released client
285
+ and engine pair through installed-console validation and rollout. CF-14.01
286
+ ([ADR 0031](docs/adr/0031-adopt-the-reviewed-forge-template-0-4-1-release.md))
287
+ adopts the reviewed `forge-template 0.4.1` release as the new
288
+ `>=0.4.1,<0.5` lower bound and prepares create-forge `0.3.0`. CF-14.02
289
+ ([ADR 0032](docs/adr/0032-validate-installed-data-science-generation.md))
290
+ validates both Data Science compositions through the installed candidate
291
+ wheel, and CF-14.03
292
+ ([ADR 0033](docs/adr/0033-complete-rollout-regression-validation.md)) reuses it
293
+ for the Library / CLI Application engine paths, the engine-less default Copier
294
+ path, a real out-of-range engine, and the full failure matrix; CF-14.04 owns
295
+ publication. See the canonical
296
+ [installed Data Science validation](docs/installed-data-science-validation.md)
297
+ and
298
+ [rollout regression and failure validation](docs/rollout-regression-validation.md)
299
+ records. The
300
+ [Data Science roadmap](docs/roadmap-v2/README.md) runs Stages 10–14.
301
+ All 24 child issues are filed and attached across both repositories; GitHub
302
+ issue bodies and native relationships are authoritative. The default Copier
303
+ path remains unchanged.
209
304
 
210
305
  ## Contributing
211
306
 
@@ -57,6 +57,9 @@ uvx create-forge new "My Lib" --yes \
57
57
  --data build_backend=hatchling \
58
58
  --data versioning=vcs \
59
59
  --data type_checking=both
60
+
61
+ # Validate an update without changing project files
62
+ uvx create-forge update --dry-run
60
63
  ```
61
64
 
62
65
  | Command | What it does |
@@ -70,6 +73,9 @@ uvx create-forge new "My Lib" --yes \
70
73
  Useful flags on `new`: `--template/-t`, `--path/-p`, `--data/-d`, `--yes/-y`,
71
74
  `--ref`, `--dry-run`.
72
75
 
76
+ Useful flags on `update`: `--ref`, `--dry-run`. An update dry run validates the
77
+ requested template update but does not apply it or produce a file-by-file diff.
78
+
73
79
  ## Configuration
74
80
 
75
81
  Optional. Saves retyping the same answers:
@@ -114,6 +120,27 @@ and [component manifest protocol v1](https://github.com/Sandsy09/forge-template/
114
120
  are now implemented behind the canonical
115
121
  [stable template-engine API](https://github.com/Sandsy09/forge-template/blob/main/docs/template-engine-api.md)
116
122
  ([ADR 0029](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0029-stable-template-engine-api.md)).
123
+ The canonical
124
+ [organisation-policy protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md)
125
+ defines how downstream clients resolve component-selection defaults and
126
+ constraints before constructing that effective ProjectSpec. CF-09.01
127
+ ([ADR 0022](docs/adr/0022-downstream-organisation-policy-hook.md)) delivered
128
+ the client-side consumption hook — this repository still resolves no policy
129
+ itself; see the canonical
130
+ [downstream policy-consumption contract](docs/organisation-policy-consumption.md).
131
+ The canonical
132
+ [safe extension contract](https://github.com/Sandsy09/forge-template/blob/main/docs/extension-points.md),
133
+ [organisation-policy fixture](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy-fixtures.md),
134
+ [compatibility policy](https://github.com/Sandsy09/forge-template/blob/main/docs/compatibility-policy.md),
135
+ and [no-copy proof](https://github.com/Sandsy09/forge-template/blob/main/docs/no-copy-inheritance.md)
136
+ complete forge-template's Stage 09 boundary. They deny arbitrary file
137
+ replacement and prove that a client can retain policy/orchestration concerns
138
+ without copying engine content or importing private engine modules. The
139
+ decisions are recorded by forge-template
140
+ [ADRs 0039](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0039-deny-policy-file-overrides.md),
141
+ [0040](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0040-organisation-policy-reference-fixture.md),
142
+ [0041](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0041-forge-blueprint-compatibility-policy.md),
143
+ and [0042](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0042-validate-no-copy-downstream-inheritance.md).
117
144
  The accepted
118
145
  [Library archetype contract](https://github.com/Sandsy09/forge-template/blob/main/docs/library-archetype.md)
119
146
  defines the first production component, implemented on `forge-template/main`
@@ -140,9 +167,13 @@ The engine now also defines in-memory
140
167
  ([ADR 0030](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0030-generated-project-validation.md))
141
168
  before rendered output is returned; `render_project` already calls it before
142
169
  `--engine-preview` receives a result.
143
- This repository now depends on a real, released `forge-template` range —
144
- `>=0.3.1,<0.4`, published to PyPI with `uv>=0.12,<0.13` as the optional
145
- `engine` extra
170
+ This repository depends on a real, released `forge-template` range —
171
+ `>=0.4.1,<0.5`. [ADR 0026](docs/adr/0026-adopt-the-0-4-engine-compatibility-line.md)
172
+ moved it from the first assigned `>=0.3.1,<0.4`, and
173
+ [ADR 0031](docs/adr/0031-adopt-the-reviewed-forge-template-0-4-1-release.md)
174
+ adopted the reviewed `0.4.1` release as its lower bound. It is published to
175
+ PyPI with
176
+ `uv>=0.12,<0.13` as the optional `engine` extra
146
177
  (`pip install 'create-forge[engine]'`; [#9](https://github.com/Sandsy09/create-forge/issues/9),
147
178
  [ADR 0018](docs/adr/0018-pypi-distribution-and-the-first-engine-range.md)) —
148
179
  rather than a development-only pin. That range is reachable only behind
@@ -168,12 +199,76 @@ issue.
168
199
 
169
200
  ## Using this at work
170
201
 
171
- In v0.1.x, organisations needing custom executable templates can fork this
172
- repository, point the bundled registry at their own templates, and maintain it
173
- internally. The accepted target makes a downstream client of the
174
- `forge-template` public engine the preferred route for organisation defaults
175
- and constraints. Forks remain appropriate for genuinely custom executable
176
- template content; see the [integration contract](docs/integration-contract.md).
202
+ The preferred route for organisation defaults, required selections, and
203
+ forbidden selections is a downstream client of the public `forge-template`
204
+ engine, resolving the canonical
205
+ [organisation-policy protocol](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md)
206
+ before constructing a ProjectSpec see the canonical
207
+ [downstream policy-consumption contract](docs/organisation-policy-consumption.md)
208
+ and [ADR 0022](docs/adr/0022-downstream-organisation-policy-hook.md).
209
+ [`examples/downstream_cli.py`](examples/downstream_cli.py) is a runnable,
210
+ second, independent client demonstrating exactly this — no dependency on
211
+ `create-forge` at all — see the canonical
212
+ [downstream client reference](docs/downstream-client-reference.md) and
213
+ [ADR 0023](docs/adr/0023-downstream-client-reference.md).
214
+ [ADR 0024](docs/adr/0024-reference-client-not-framework-dependency.md)
215
+ completes the Stage 09 boundary: `create-forge` is one reference client, not a
216
+ framework dependency for that client, the engine, or generated projects.
217
+
218
+ Forking this repository remains appropriate only for genuinely custom
219
+ executable template content that has no equivalent in the reviewed public
220
+ engine — point the bundled registry at your own templates and maintain the
221
+ fork internally, as v0.1.x always supported. See the
222
+ [integration contract](docs/integration-contract.md) for the full boundary.
223
+
224
+ The [accepted Data Science shape](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-archetype.md)
225
+ is an independent, package-backed, notebook-oriented third archetype. The
226
+ [initial capability contracts](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-capabilities.md)
227
+ define its required reusable Jupyter tooling and independently optional
228
+ Scientific Python stack. FT-11.02 implements Jupyter under [ADR
229
+ 0050](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0050-production-jupyter-capability.md),
230
+ and FT-11.03 implements Scientific Python under [ADR
231
+ 0051](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0051-production-scientific-python-capability.md).
232
+ Stage 11 then validated their production composition, and Stage 12 added and
233
+ validated the `data-science` archetype. The complete five-component catalogue
234
+ is published as
235
+ [`forge-template 0.4.0`](https://github.com/Sandsy09/forge-template/releases/tag/v0.4.0)
236
+ on [PyPI](https://pypi.org/project/forge-template/0.4.0/); its
237
+ [published acceptance evidence](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-validation.md#published-040-release-verification)
238
+ was the immutable provider hand-off to Stage 13.
239
+ [CF-13.01](https://github.com/Sandsy09/create-forge/issues/106)
240
+ ([ADR 0026](docs/adr/0026-adopt-the-0-4-engine-compatibility-line.md)) adopted
241
+ `forge-template>=0.4,<0.5`, so the engine-preview path now discovers all five
242
+ components, and CF-13.02
243
+ ([ADR 0027](docs/adr/0027-generic-component-selection-conventions.md)) fixed
244
+ how they are selected in the canonical
245
+ [component selection contract](docs/component-selection.md). CF-13.03
246
+ ([ADR 0028](docs/adr/0028-discovery-driven-component-selection.md)) implemented
247
+ capability and platform selection behind `--engine-preview`, and CF-13.04
248
+ ([ADR 0029](docs/adr/0029-per-component-option-collection.md)) per-component
249
+ option collection and `--component-option`. CF-13.05
250
+ ([ADR 0030](docs/adr/0030-data-science-preview-pipeline-validation.md))
251
+ validated the Data Science composition through the shared pipeline against the
252
+ released engine, closing **Stage 13**; Stage 14 then takes the released client
253
+ and engine pair through installed-console validation and rollout. CF-14.01
254
+ ([ADR 0031](docs/adr/0031-adopt-the-reviewed-forge-template-0-4-1-release.md))
255
+ adopts the reviewed `forge-template 0.4.1` release as the new
256
+ `>=0.4.1,<0.5` lower bound and prepares create-forge `0.3.0`. CF-14.02
257
+ ([ADR 0032](docs/adr/0032-validate-installed-data-science-generation.md))
258
+ validates both Data Science compositions through the installed candidate
259
+ wheel, and CF-14.03
260
+ ([ADR 0033](docs/adr/0033-complete-rollout-regression-validation.md)) reuses it
261
+ for the Library / CLI Application engine paths, the engine-less default Copier
262
+ path, a real out-of-range engine, and the full failure matrix; CF-14.04 owns
263
+ publication. See the canonical
264
+ [installed Data Science validation](docs/installed-data-science-validation.md)
265
+ and
266
+ [rollout regression and failure validation](docs/rollout-regression-validation.md)
267
+ records. The
268
+ [Data Science roadmap](docs/roadmap-v2/README.md) runs Stages 10–14.
269
+ All 24 child issues are filed and attached across both repositories; GitHub
270
+ issue bodies and native relationships are authoritative. The default Copier
271
+ path remains unchanged.
177
272
 
178
273
  ## Contributing
179
274
 
@@ -24,6 +24,18 @@ format](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
24
24
  - [0019 — CLI archetype-parity review](0019-cli-archetype-parity-review.md)
25
25
  - [0020 — Test the public engine path end to end](0020-engine-path-end-to-end-tests.md)
26
26
  - [0021 — Finalise engine-generated lockfiles in the client](0021-client-finalises-engine-lockfiles.md)
27
+ - [0022 — Downstream organisation-policy consumption hook](0022-downstream-organisation-policy-hook.md)
28
+ - [0023 — Downstream client reference](0023-downstream-client-reference.md)
29
+ - [0024 — Keep create-forge a reference client, not a framework dependency](0024-reference-client-not-framework-dependency.md)
30
+ - [0025 — Prompt the engine path from discovery, not the Copier registry](0025-engine-native-prompt-flow.md)
31
+ - [0026 — Adopt the forge-template 0.4 compatibility line](0026-adopt-the-0-4-engine-compatibility-line.md)
32
+ - [0027 — Select components from discovery, with owner-qualified options](0027-generic-component-selection-conventions.md)
33
+ - [0028 — Select capabilities and platforms from one discovered catalogue](0028-discovery-driven-component-selection.md)
34
+ - [0029 — Collect and serialise options for every selected component](0029-per-component-option-collection.md)
35
+ - [0030 — Validate the Data Science preview pipeline against the released engine](0030-data-science-preview-pipeline-validation.md)
36
+ - [0031 — Adopt the reviewed forge-template 0.4.1 release](0031-adopt-the-reviewed-forge-template-0-4-1-release.md)
37
+ - [0032 — Validate Data Science through the installed create-forge candidate](0032-validate-installed-data-science-generation.md)
38
+ - [0033 — Complete the rollout regression and failure matrix at the installed boundary](0033-complete-rollout-regression-validation.md)
27
39
 
28
40
  Add a new record by copying the most recent one and incrementing the number.
29
41
  Records are immutable: supersede them rather than editing.
@@ -1,5 +1,9 @@
1
1
  # Forge Foundation Roadmap Pack — Two-Repository Edition
2
2
 
3
+ > **Completed historical roadmap.** Stages 00–09 are closed. Paths remain
4
+ > stable as decision and issue evidence. New Data Science work continues in
5
+ > the [Stage 10–14 roadmap](../roadmap-v2/README.md).
6
+
3
7
  This revision models Forge as two independent repositories that work together through an explicit contract:
4
8
 
5
9
  - **`forge-template`** owns generated content, component metadata and the template/composition engine.
@@ -51,8 +55,23 @@ workflows, which remain independently owned and unchanged.
51
55
  The canonical
52
56
  [ProjectSpec protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/project-spec.md)
53
57
  defines the strict effective generation request owned by `forge-template`.
54
- `create-forge` retains construction and user-facing orchestration, which remain
55
- unimplemented until the supported engine cutover.
58
+ `create-forge` retains construction and user-facing orchestration. The canonical
59
+ [organisation-policy protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md)
60
+ defines how downstream clients resolve component-selection policy before
61
+ constructing that effective request. CF-09.01
62
+ ([ADR 0022](https://github.com/Sandsy09/create-forge/blob/main/docs/adr/0022-downstream-organisation-policy-hook.md))
63
+ delivered the client hook; `create-forge` still consumes no policy itself.
64
+ Forge-template Epic 09 is complete through its canonical
65
+ [extension contract](https://github.com/Sandsy09/forge-template/blob/main/docs/extension-points.md),
66
+ [policy fixture](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy-fixtures.md),
67
+ [compatibility policy](https://github.com/Sandsy09/forge-template/blob/main/docs/compatibility-policy.md),
68
+ and [no-copy proof](https://github.com/Sandsy09/forge-template/blob/main/docs/no-copy-inheritance.md).
69
+ Forge-template [ADRs 0039–0042](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/README.md)
70
+ record those four decisions.
71
+ Create-forge Epic #40 and #53–#55 are complete under
72
+ [ADR 0024](../adr/0024-reference-client-not-framework-dependency.md), which
73
+ validates the client-owned half without making `create-forge` a shared
74
+ framework dependency.
56
75
  The canonical
57
76
  [component manifest protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/component-manifests.md)
58
77
  defines engine-owned bundled component metadata and compatibility. The
@@ -44,7 +44,11 @@
44
44
  (`pipeline._resolved_component_options`) is now gated by a discovered
45
45
  descriptor rather than a hardcoded archetype id. The engine path's
46
46
  Library-shaped prompt set was recorded, not fixed, and tracked by
47
- [create-forge#91](https://github.com/Sandsy09/create-forge/issues/91).
47
+ [create-forge#91](https://github.com/Sandsy09/create-forge/issues/91)
48
+ since closed via
49
+ [ADR 0025](https://github.com/Sandsy09/create-forge/blob/main/docs/adr/0025-engine-native-prompt-flow.md):
50
+ `--engine-preview` now prompts directly from the selected archetype's own
51
+ discovered `ComponentDescriptor.options` and reads no registry data at all.
48
52
  - ~~**CF-08.04 — Extend end-to-end generation to the public engine**~~ —
49
53
  complete via
50
54
  [ADR 0020](https://github.com/Sandsy09/create-forge/blob/main/docs/adr/0020-engine-path-end-to-end-tests.md)
@@ -0,0 +1,62 @@
1
+ # Stage 09 — Blueprint Compatibility
2
+
3
+ ## Repository ownership
4
+
5
+ ### forge-template
6
+
7
+ - [x] **FT-09.01 — Define organisation policy model** — completed by the
8
+ canonical [organisation-policy protocol v1](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy.md),
9
+ [ADR 0038](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0038-organisation-policy-selection-model.md),
10
+ and [forge-template PR #89](https://github.com/Sandsy09/forge-template/pull/89).
11
+ - [x] **FT-09.02 — Define safe override and extension points** — completed by
12
+ the canonical [extension contract](https://github.com/Sandsy09/forge-template/blob/main/docs/extension-points.md),
13
+ [ADR 0039](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0039-deny-policy-file-overrides.md),
14
+ and [forge-template PR #90](https://github.com/Sandsy09/forge-template/pull/90).
15
+ - [x] **FT-09.03 — Create generic downstream policy reference fixture** —
16
+ completed by the canonical [fixture guide](https://github.com/Sandsy09/forge-template/blob/main/docs/organisation-policy-fixtures.md),
17
+ [ADR 0040](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0040-organisation-policy-reference-fixture.md),
18
+ and [forge-template PR #91](https://github.com/Sandsy09/forge-template/pull/91).
19
+ - [x] **FT-09.04 — Define Forge-Blueprint compatibility policy** — completed
20
+ by the canonical [compatibility policy](https://github.com/Sandsy09/forge-template/blob/main/docs/compatibility-policy.md),
21
+ [ADR 0041](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0041-forge-blueprint-compatibility-policy.md),
22
+ and [forge-template PR #92](https://github.com/Sandsy09/forge-template/pull/92).
23
+ - [x] **FT-09.05 — Validate no-copy inheritance model** — completed by the
24
+ canonical [no-copy proof](https://github.com/Sandsy09/forge-template/blob/main/docs/no-copy-inheritance.md),
25
+ [ADR 0042](https://github.com/Sandsy09/forge-template/blob/main/docs/adr/0042-validate-no-copy-downstream-inheritance.md),
26
+ and [forge-template PR #93](https://github.com/Sandsy09/forge-template/pull/93).
27
+
28
+ Forge-template [Epic #18](https://github.com/Sandsy09/forge-template/issues/18)
29
+ and its milestone are complete. Its contracts keep policy selection-only,
30
+ deny arbitrary file replacement, define compatibility, and prove public-
31
+ facade reuse without copied Foundation/component source. The private fixture
32
+ catalogue remains a forge-template test seam, not a client plugin mechanism.
33
+
34
+ ### create-forge
35
+
36
+ - Epic: [CF-EPIC-09 / #40](https://github.com/Sandsy09/create-forge/issues/40)
37
+ - [x] [**CF-09.01 — Define downstream policy-consumption hook**](https://github.com/Sandsy09/create-forge/issues/53)
38
+ — complete. `pipeline.build_generation_request` accepts a `selection`/
39
+ `provenance` pair built from `spec.SelectionRequest`/`SelectionProvenance`;
40
+ `create-forge` ships no resolver and reads no policy document by design.
41
+ See [ADR 0022](https://github.com/Sandsy09/create-forge/blob/main/docs/adr/0022-downstream-organisation-policy-hook.md)
42
+ and the canonical [downstream policy-consumption contract](https://github.com/Sandsy09/create-forge/blob/main/docs/organisation-policy-consumption.md).
43
+ - [x] [**CF-09.02 — Create downstream CLI integration reference**](https://github.com/Sandsy09/create-forge/issues/54)
44
+ — complete. `examples/downstream_cli.py`: a second, independent
45
+ Blueprint-style CLI over the public `forge_template` facade, with its own
46
+ compatibility bounds and its own minimal organisation-policy resolver, and
47
+ no dependency on `create-forge` at all (an AST guard proves it). See
48
+ [ADR 0023](https://github.com/Sandsy09/create-forge/blob/main/docs/adr/0023-downstream-client-reference.md)
49
+ and the canonical [downstream client reference](https://github.com/Sandsy09/create-forge/blob/main/docs/downstream-client-reference.md).
50
+ - [x] [**CF-09.03 — Validate create-forge is a reference client, not a framework dependency**](https://github.com/Sandsy09/create-forge/issues/55)
51
+ — complete. [ADR 0024](../../../adr/0024-reference-client-not-framework-dependency.md)
52
+ records the strict one-way dependency, the living
53
+ [integration contract](../../../integration-contract.md) maps every
54
+ acceptance criterion to executable evidence, and both production
55
+ archetypes are checked for Forge-free generated dependencies and locks.
56
+
57
+ ## Stage completion rule
58
+
59
+ - [x] Repo-local issues are complete or explicitly deferred.
60
+ - [x] Cross-repository blockers are resolved.
61
+ - [x] Public contracts changed by this stage are documented/versioned.
62
+ - [x] No implementation concern is duplicated across repositories.
@@ -0,0 +1,55 @@
1
+ # Forge Data Science Roadmap — Two-Repository Edition
2
+
3
+ This roadmap continues the completed
4
+ [Forge Foundation roadmap](../roadmap-v1/README.md) through Stages 10–14.
5
+ It plans the next production archetype without reopening the Foundation,
6
+ composition, reference-client, or Blueprint decisions completed in Stages
7
+ 00–09.
8
+
9
+ The target is a package-backed, notebook-oriented Data Science project with
10
+ reusable optional capabilities. Exact scientific libraries, notebook front
11
+ ends, data-versioning systems, model tooling, and deployment integrations are
12
+ not selected here; Stage 10 owns those decisions.
13
+
14
+ Delivery remains behind `create-forge new --engine-preview`. Retiring the
15
+ default direct-Copier path is a separate future initiative.
16
+
17
+ Stages 10–12 are complete. The package-bound five-component catalogue is
18
+ published as
19
+ [`forge-template 0.4.0`](https://github.com/Sandsy09/forge-template/releases/tag/v0.4.0)
20
+ on [PyPI](https://pypi.org/project/forge-template/0.4.0/). Stage 13 is
21
+ complete: CF-13.01 (ADR 0026) adopted the `forge-template>=0.4,<0.5`
22
+ compatibility line, so `--engine-preview` discovery now returns all five
23
+ descriptors, and CF-13.02 (ADR 0027) fixed the generic component-selection
24
+ CLI conventions, which CF-13.03 (ADR 0028) implemented for capabilities and
25
+ platforms and CF-13.04 (ADR 0029) for per-component options, and CF-13.05
26
+ (ADR 0030) validated the Data Science composition through the shared pipeline
27
+ against the released engine, closing CF-EPIC-13. Stage 14 takes the released
28
+ client and engine pair through installed-console validation and rollout.
29
+ Provider Stage 14 is complete and published the reviewed
30
+ `forge-template 0.4.1` release. CF-14.01 (ADR 0031) adopts it as create-forge's
31
+ `>=0.4.1,<0.5` lower bound and prepares create-forge `0.3.0`; CF-14.02
32
+ (ADR 0032) completes installed-console Data Science validation, and CF-14.03
33
+ (ADR 0033) completes the installed regression and failure matrix. CF-14.04
34
+ publishes the client and closes the Stage 14 milestones.
35
+
36
+ ## Repository roles
37
+
38
+ - **forge-template** owns the Data Science contract, capabilities, archetype,
39
+ composition review, generated content, and engine releases.
40
+ - **create-forge** owns discovery-driven user input, ProjectSpec construction,
41
+ diagnostics, staging, lock finalisation, and end-to-end client validation.
42
+
43
+ See the [architecture](ARCHITECTURE.md),
44
+ [ownership model](REPOSITORY-OWNERSHIP.md), and
45
+ [stage roadmap](ROADMAP.md) for the complete boundary.
46
+
47
+ ## Live GitHub work
48
+
49
+ Six epics and 24 child issues are filed across the two repositories. GitHub
50
+ issue bodies and native parent/dependency relationships are authoritative:
51
+
52
+ - [forge-template epic index](https://github.com/Sandsy09/forge-template/blob/main/docs/roadmap-v2/github-issues/forge-template/ISSUE-INDEX.md)
53
+ - [create-forge epic index](https://github.com/Sandsy09/create-forge/blob/main/docs/roadmap-v2/github-issues/create-forge/ISSUE-INDEX.md)
54
+ - [cross-repository dependency matrix](github-issues/CROSS-REPO-DEPENDENCIES.md)
55
+ - [GitHub setup and taxonomy](github-issues/GITHUB-SETUP.md)
@@ -0,0 +1,61 @@
1
+ # Stage 10 — Data Science Architecture Contract
2
+
3
+ ## Epic
4
+
5
+ [FT-EPIC-10 / forge-template#96](https://github.com/Sandsy09/forge-template/issues/96)
6
+ defines the contract before any component is implemented.
7
+
8
+ ## Dependencies
9
+
10
+ This epic has no open native blocker. The roadmap begins only after completed
11
+ `create-forge#91` and the completed Foundation roadmap provide its accepted
12
+ engine and client baseline.
13
+
14
+ ## Child sequence
15
+
16
+ 1. [FT-10.01 / #101](https://github.com/Sandsy09/forge-template/issues/101)
17
+ is complete: the canonical
18
+ [Data Science contract](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-archetype.md)
19
+ defines the fixed package-plus-notebooks shape and ownership.
20
+ 2. [FT-10.02 / #102](https://github.com/Sandsy09/forge-template/issues/102)
21
+ is complete: the canonical
22
+ [initial capability contracts](https://github.com/Sandsy09/forge-template/blob/main/docs/data-science-capabilities.md)
23
+ define optionless `jupyter` and `scientific-python` components and bounded
24
+ dependency lines.
25
+ 3. [FT-10.03 / #103](https://github.com/Sandsy09/forge-template/issues/103)
26
+ defines notebook, data, model, secret, and generated-artefact safeguards.
27
+ 4. [FT-10.04 / #104](https://github.com/Sandsy09/forge-template/issues/104)
28
+ fixes compatibility, acceptance, and `forge-template` 0.4.0 release
29
+ requirements.
30
+
31
+ Each child is blocked by the preceding item. With FT-10.02 complete, FT-10.03
32
+ is the next actionable decision.
33
+
34
+ ## Entry criteria
35
+
36
+ - Forge Foundation Stages 00–09 are complete.
37
+ - Library and CLI Application prove independent production archetypes.
38
+ - create-forge #91 has completed engine-native option prompting.
39
+
40
+ ## Outcomes
41
+
42
+ - Define the minimal package-plus-notebooks project shape.
43
+ - Assign every concern to Foundation, archetype, capability, platform,
44
+ profile, organisation policy, or client orchestration.
45
+ - Define dependency-selection criteria rather than selecting tools by trend.
46
+ - Define data, model, secret, path, environment, and generated-artifact
47
+ safeguards.
48
+ - Define Python, lock, packaging, notebook-validation, and maintenance
49
+ expectations.
50
+ - Classify all protocol, public API, component, engine, and client
51
+ compatibility impacts.
52
+
53
+ ## Exit criteria
54
+
55
+ The four accepted decisions make the shape, capability boundaries,
56
+ safeguards, compatibility impact, and acceptance strategy implementation-ready.
57
+
58
+ ## Non-goals
59
+
60
+ No production component, dependency, generated output, CLI behavior, tag, or
61
+ release is introduced in this stage.