create-forge 0.2.1__tar.gz → 0.3.1__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 (78) hide show
  1. {create_forge-0.2.1 → create_forge-0.3.1}/CHANGELOG.md +46 -0
  2. create_forge-0.3.1/PKG-INFO +213 -0
  3. create_forge-0.3.1/README.md +180 -0
  4. {create_forge-0.2.1 → create_forge-0.3.1}/docs/adr/README.md +17 -0
  5. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/README.md +21 -2
  6. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/08-reference-archetype-validation/README.md +5 -1
  7. create_forge-0.3.1/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +62 -0
  8. create_forge-0.3.1/docs/roadmap-v2/README.md +57 -0
  9. create_forge-0.3.1/docs/roadmap-v2/roadmap/10-data-science-architecture-contract/README.md +61 -0
  10. create_forge-0.3.1/docs/roadmap-v2/roadmap/11-reusable-data-science-capabilities/README.md +59 -0
  11. create_forge-0.3.1/docs/roadmap-v2/roadmap/12-data-science-archetype/README.md +60 -0
  12. create_forge-0.3.1/docs/roadmap-v2/roadmap/13-data-science-cli-integration/README.md +97 -0
  13. create_forge-0.3.1/docs/roadmap-v2/roadmap/14-data-science-validation-and-rollout/README.md +101 -0
  14. create_forge-0.3.1/examples/README.md +91 -0
  15. {create_forge-0.2.1 → create_forge-0.3.1}/pyproject.toml +41 -15
  16. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/cli.py +519 -37
  17. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/compat.py +18 -8
  18. create_forge-0.3.1/src/create_forge/pipeline.py +310 -0
  19. create_forge-0.3.1/src/create_forge/prompts.py +601 -0
  20. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/runner.py +56 -13
  21. create_forge-0.3.1/src/create_forge/sources.py +86 -0
  22. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/spec.py +169 -1
  23. {create_forge-0.2.1 → create_forge-0.3.1}/tests/conftest.py +42 -0
  24. create_forge-0.3.1/tests/installed_client.py +308 -0
  25. create_forge-0.3.1/tests/test_archetype_parity.py +215 -0
  26. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_cli.py +389 -32
  27. create_forge-0.3.1/tests/test_component_selection.py +974 -0
  28. create_forge-0.3.1/tests/test_data_science_pipeline.py +538 -0
  29. create_forge-0.3.1/tests/test_downstream_reference.py +397 -0
  30. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_e2e_engine_generation.py +94 -12
  31. create_forge-0.3.1/tests/test_e2e_installed_data_science.py +496 -0
  32. create_forge-0.3.1/tests/test_e2e_installed_rollout.py +712 -0
  33. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_engine_adapter.py +35 -15
  34. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_engine_contract.py +125 -5
  35. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_engine_cross_repository.py +90 -9
  36. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_pipeline.py +158 -16
  37. create_forge-0.3.1/tests/test_policy_hook.py +177 -0
  38. create_forge-0.3.1/tests/test_prompts.py +497 -0
  39. create_forge-0.3.1/tests/test_reference_client_boundary.py +87 -0
  40. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_runner.py +71 -0
  41. create_forge-0.3.1/tests/test_sources.py +307 -0
  42. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_update.py +101 -3
  43. create_forge-0.3.1/tests/test_workflows.py +171 -0
  44. create_forge-0.2.1/PKG-INFO +0 -217
  45. create_forge-0.2.1/README.md +0 -185
  46. create_forge-0.2.1/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +0 -25
  47. create_forge-0.2.1/src/create_forge/pipeline.py +0 -166
  48. create_forge-0.2.1/src/create_forge/prompts.py +0 -231
  49. create_forge-0.2.1/tests/test_archetype_parity.py +0 -161
  50. create_forge-0.2.1/tests/test_prompts.py +0 -187
  51. {create_forge-0.2.1 → create_forge-0.3.1}/.gitignore +0 -0
  52. {create_forge-0.2.1 → create_forge-0.3.1}/LICENSE +0 -0
  53. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/00-governance-and-principles/README.md +0 -0
  54. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/01-python-core/README.md +0 -0
  55. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/02-developer-experience/README.md +0 -0
  56. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/03-quality-and-ci/README.md +0 -0
  57. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/04-runtime-and-configuration/README.md +0 -0
  58. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/05-security-and-supply-chain/README.md +0 -0
  59. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/06-extension-and-composition-contract/README.md +0 -0
  60. {create_forge-0.2.1 → create_forge-0.3.1}/docs/roadmap-v1/roadmap/07-forge-cli-integration/README.md +0 -0
  61. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/__init__.py +0 -0
  62. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/config.py +0 -0
  63. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/engine.py +0 -0
  64. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/models.py +0 -0
  65. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/registry.py +0 -0
  66. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/staging.py +0 -0
  67. {create_forge-0.2.1 → create_forge-0.3.1}/src/create_forge/templates.toml +0 -0
  68. {create_forge-0.2.1 → create_forge-0.3.1}/tests/__init__.py +0 -0
  69. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_adr.py +0 -0
  70. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_config.py +0 -0
  71. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_drift.py +0 -0
  72. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_e2e_generation.py +0 -0
  73. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_labels.py +0 -0
  74. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_models.py +0 -0
  75. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_registry.py +0 -0
  76. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_spec.py +0 -0
  77. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_staging.py +0 -0
  78. {create_forge-0.2.1 → create_forge-0.3.1}/tests/test_update_network.py +0 -0
@@ -1,6 +1,52 @@
1
1
  # Changelog
2
2
 
3
3
  Generated by git-cliff from Conventional Commits.
4
+ ## [0.3.1] - 2026-09-08
5
+
6
+ ### Bug Fixes
7
+
8
+ - Prevent template source credentials from reaching CLI output (#144)
9
+ - Raise the Copier floor past the destination-escape advisories
10
+
11
+ ### Documentation
12
+
13
+ - Publish 0.3.0 and close the Data Science roadmap (#130)
14
+ - Add shared Forge user guide and simplify README (#131)
15
+ ## [0.3.0] - 2026-09-05
16
+
17
+ ### Bug Fixes
18
+
19
+ - Handle template clone failures
20
+
21
+ ### Documentation
22
+
23
+ - Link canonical organisation policy model
24
+ - Sync canonical Stage 09 contracts
25
+ - Validate the reference-client boundary
26
+ - Add Data Science CLI roadmap
27
+ - Add Data Science CLI issue plan
28
+ - Link canonical Data Science project shape
29
+ - Link canonical Data Science capability contracts
30
+ - Link production Jupyter capability
31
+ - Link production Scientific Python capability
32
+ - Record forge-template 0.4.0 release
33
+ - Define generic component-selection CLI conventions (#122)
34
+
35
+ ### Features
36
+
37
+ - Define the downstream policy-consumption hook (#97)
38
+ - Add a downstream CLI integration reference (#98)
39
+ - Add dry-run support to update
40
+ - Prompt engine options from discovery, not the registry (#102)
41
+ - Adopt the forge-template 0.4 compatibility line (#121)
42
+ - Select capabilities and platforms from discovery (#123)
43
+ - Collect options for every selected component (#124)
44
+
45
+ ### Testing
46
+
47
+ - Validate the Data Science preview pipeline (#125)
48
+ - Validate installed Data Science generation (#127)
49
+ - Complete the rollout regression and failure matrix (#128)
4
50
  ## [0.2.1] - 2026-08-31
5
51
 
6
52
  ### Bug Fixes
@@ -0,0 +1,213 @@
1
+ Metadata-Version: 2.5
2
+ Name: create-forge
3
+ Version: 0.3.1
4
+ Summary: Scaffold modern Python projects from maintained templates.
5
+ Project-URL: Homepage, https://github.com/Sandsy09/create-forge
6
+ Project-URL: Repository, https://github.com/Sandsy09/create-forge
7
+ Project-URL: Issues, https://github.com/Sandsy09/create-forge/issues
8
+ Project-URL: Changelog, https://github.com/Sandsy09/create-forge/blob/main/CHANGELOG.md
9
+ Author: Alex
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: cookiecutter,copier,project,scaffold,template
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Topic :: Software Development :: Code Generators
21
+ Classifier: Typing :: Typed
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: copier<10,>=9.15.2
24
+ Requires-Dist: pydantic>=2.10
25
+ Requires-Dist: pyyaml>=6.0
26
+ Requires-Dist: questionary>=2.0
27
+ Requires-Dist: rich>=13.9
28
+ Requires-Dist: typer>=0.16
29
+ Provides-Extra: engine
30
+ Requires-Dist: forge-template<0.5,>=0.4.1; extra == 'engine'
31
+ Requires-Dist: uv<0.13,>=0.12; extra == 'engine'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # create-forge
35
+
36
+ [![CI](https://github.com/Sandsy09/create-forge/actions/workflows/ci.yml/badge.svg)](https://github.com/Sandsy09/create-forge/actions/workflows/ci.yml)
37
+ [![PyPI](https://img.shields.io/pypi/v/create-forge)](https://pypi.org/project/create-forge/)
38
+
39
+ Create Python projects with packaging, quality checks, and a useful starting
40
+ structure already in place.
41
+
42
+ ```bash
43
+ uvx create-forge new
44
+ ```
45
+
46
+ Requires [uv](https://docs.astral.sh/uv/getting-started/installation/), Git,
47
+ and Python 3.11+ (uv can install Python for you). Configure your Git author
48
+ name and email before generating a default Library project: generation
49
+ creates local commits.
50
+
51
+ **[Read the Forge user guide](https://sandsy09.github.io/create-forge/)**
52
+ for walkthroughs, template choices, and troubleshooting.
53
+
54
+ ## How the repositories fit together
55
+
56
+ | Repository | What it provides |
57
+ | --- | --- |
58
+ | **create-forge** | The CLI: prompts, project creation, updates, and diagnostics. |
59
+ | [forge-template](https://github.com/Sandsy09/forge-template) | The project templates and composition engine used to generate files. |
60
+
61
+ You normally use the CLI without cloning either repository. Generated
62
+ projects do not depend on either Forge package at runtime.
63
+
64
+ ## Create your first project
65
+
66
+ ```bash
67
+ uvx create-forge new "My Library"
68
+ cd my-library
69
+ uv run poe check
70
+ ```
71
+
72
+ The default workflow creates an installable Library with a `src/` layout,
73
+ uv, Ruff, pytest with coverage, mypy and/or pyright, pre-commit hooks, and
74
+ GitHub Actions CI. Choose your build backend, versioning, license, and
75
+ dependency-update tooling. MkDocs documentation is optional.
76
+
77
+ The template is rendered by [Copier](https://copier.readthedocs.io/), which
78
+ also supports bringing later template improvements into existing projects.
79
+
80
+ ## Install and manage the tool
81
+
82
+ Use `uvx` for occasional runs, or install a persistent command:
83
+
84
+ ```bash
85
+ uv tool install create-forge
86
+ create-forge new
87
+ uv tool upgrade create-forge
88
+ ```
89
+
90
+ If the command is not on your PATH, run `uv tool update-shell` and restart
91
+ your terminal.
92
+
93
+ ### Choose a CLI version
94
+
95
+ ```bash
96
+ uvx create-forge@latest new
97
+ uvx create-forge@0.3.0 new
98
+ uv tool install "create-forge==0.3.0"
99
+ ```
100
+
101
+ Plain `uvx create-forge` can reuse a cached or persistently installed
102
+ version; `@latest` explicitly requests the latest release. Tool upgrades
103
+ respect the constraints used at installation, so an exact pin stays pinned.
104
+ To return to the latest release, run `uv tool install create-forge@latest`.
105
+ See [installation and versions](https://sandsy09.github.io/create-forge/installation/).
106
+
107
+ ## Everyday usage
108
+
109
+ | Command | Purpose |
110
+ | --- | --- |
111
+ | `uvx create-forge new` | Create a project interactively. |
112
+ | `uvx create-forge list` | List the bundled Copier templates. |
113
+ | `uvx create-forge update` | Update a Copier-generated project from its directory. |
114
+ | `uvx create-forge doctor` | Diagnose Python, Git, uv, and package compatibility. |
115
+ | `uvx create-forge config init` | Create an optional configuration file. |
116
+ | `uvx create-forge config show` | Show resolved configuration and its sources. |
117
+
118
+ For scripts and CI, provide a project name and skip questions with `--yes`:
119
+
120
+ ```bash
121
+ uvx create-forge new "My Library" --yes --data github_org=your-org --data build_backend=hatchling --data versioning=vcs
122
+ ```
123
+
124
+ Use `--path` to choose the destination and repeat `--data key=value` to
125
+ preset answers. Run `uvx create-forge new --help` for the default workflow's
126
+ options. Saved author details, GitHub organisation, and preferred template
127
+ are covered in the [CLI guide](https://sandsy09.github.io/create-forge/cli/).
128
+
129
+ ### Choose a template version or source
130
+
131
+ ```bash
132
+ uvx create-forge new "My Library" --template library --ref v0.4.1
133
+ uvx create-forge new "Custom Project" --template-url https://github.com/you/your-template
134
+ ```
135
+
136
+ `--ref` selects a Git revision in the **template repository**. It does not
137
+ select the CLI version. Without it, Copier uses the latest suitable release
138
+ tag. The bundled registry currently offers Library; upgrade the CLI to
139
+ receive registry changes.
140
+
141
+ Templates can execute code through generation and update tasks. Use custom
142
+ sources only when you trust their content; `--yes` also skips the custom
143
+ template confirmation.
144
+
145
+ ### Update a generated project
146
+
147
+ From a clean, committed Copier-generated project:
148
+
149
+ ```bash
150
+ uvx create-forge update --dry-run
151
+ uvx create-forge update
152
+ uv run poe check
153
+ ```
154
+
155
+ Keep `.copier-answers.yml` committed. Review the resulting diff and resolve
156
+ conflicts before committing. A dry run validates the update without applying
157
+ it; it does not produce a file-by-file diff. Use `update --ref v0.4.1` to
158
+ target a particular template version.
159
+
160
+ ## Preview: more project types and capabilities
161
+
162
+ The `0.3.0` CLI also provides an opt-in engine preview using
163
+ `forge-template>=0.4.1,<0.5`. These options are currently hidden from help.
164
+
165
+ | Project type | Use it for |
166
+ | --- | --- |
167
+ | Library | A distributable Python package with a choice of packaging modes. |
168
+ | CLI Application | A Typer application with a console command and tests. |
169
+ | Data Science | A Python package with a starter notebook and Jupyter tooling. |
170
+
171
+ Add **Jupyter** for notebook development or **Scientific Python** for NumPy,
172
+ pandas, Matplotlib, and scikit-learn. Data Science requires Jupyter;
173
+ Scientific Python is optional. These capabilities can also accompany the
174
+ other preview archetypes.
175
+
176
+ ```bash
177
+ uvx --from "create-forge[engine]==0.3.0" create-forge new "My Analysis" --engine-preview --archetype data-science --capability jupyter --yes --data license=mit
178
+ cd my-analysis
179
+ uv run --locked poe check
180
+ uv run poe notebook
181
+ ```
182
+
183
+ For regular preview use, install with `uv tool install "create-forge[engine]"`.
184
+ The [project guide](https://sandsy09.github.io/create-forge/projects/) explains
185
+ each type's output and links to complete recipes.
186
+
187
+ **Preview projects do not support `create-forge update`.** Their shared
188
+ tooling differs from the default Copier template; the preview does not
189
+ generate its CI workflows or install Git hooks. `--template`,
190
+ `--template-url`, and `--ref` apply only to the Copier workflow.
191
+
192
+ ## What's next
193
+
194
+ The Foundation and Data Science roadmaps are complete. Making the engine
195
+ the default generation workflow is a planned direction with no scheduled
196
+ release. Follow [open work](https://github.com/Sandsy09/create-forge/issues)
197
+ and [releases](https://github.com/Sandsy09/create-forge/releases) for updates,
198
+ or suggest a project type, capability, or guide you would find useful.
199
+
200
+ ## Feedback and contributing
201
+
202
+ - [Report a CLI problem or suggest a feature](https://github.com/Sandsy09/create-forge/issues/new/choose).
203
+ - [Request or correct documentation](https://github.com/Sandsy09/create-forge/issues/new?template=documentation.yml).
204
+ - [Report generated-content or capability problems](https://github.com/Sandsy09/forge-template/issues/new/choose).
205
+
206
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development and PR checks, and
207
+ the [reference index](https://sandsy09.github.io/create-forge/reference/) for
208
+ engine APIs and architecture documents. Report vulnerabilities through
209
+ [SECURITY.md](SECURITY.md).
210
+
211
+ ## License
212
+
213
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,180 @@
1
+ # create-forge
2
+
3
+ [![CI](https://github.com/Sandsy09/create-forge/actions/workflows/ci.yml/badge.svg)](https://github.com/Sandsy09/create-forge/actions/workflows/ci.yml)
4
+ [![PyPI](https://img.shields.io/pypi/v/create-forge)](https://pypi.org/project/create-forge/)
5
+
6
+ Create Python projects with packaging, quality checks, and a useful starting
7
+ structure already in place.
8
+
9
+ ```bash
10
+ uvx create-forge new
11
+ ```
12
+
13
+ Requires [uv](https://docs.astral.sh/uv/getting-started/installation/), Git,
14
+ and Python 3.11+ (uv can install Python for you). Configure your Git author
15
+ name and email before generating a default Library project: generation
16
+ creates local commits.
17
+
18
+ **[Read the Forge user guide](https://sandsy09.github.io/create-forge/)**
19
+ for walkthroughs, template choices, and troubleshooting.
20
+
21
+ ## How the repositories fit together
22
+
23
+ | Repository | What it provides |
24
+ | --- | --- |
25
+ | **create-forge** | The CLI: prompts, project creation, updates, and diagnostics. |
26
+ | [forge-template](https://github.com/Sandsy09/forge-template) | The project templates and composition engine used to generate files. |
27
+
28
+ You normally use the CLI without cloning either repository. Generated
29
+ projects do not depend on either Forge package at runtime.
30
+
31
+ ## Create your first project
32
+
33
+ ```bash
34
+ uvx create-forge new "My Library"
35
+ cd my-library
36
+ uv run poe check
37
+ ```
38
+
39
+ The default workflow creates an installable Library with a `src/` layout,
40
+ uv, Ruff, pytest with coverage, mypy and/or pyright, pre-commit hooks, and
41
+ GitHub Actions CI. Choose your build backend, versioning, license, and
42
+ dependency-update tooling. MkDocs documentation is optional.
43
+
44
+ The template is rendered by [Copier](https://copier.readthedocs.io/), which
45
+ also supports bringing later template improvements into existing projects.
46
+
47
+ ## Install and manage the tool
48
+
49
+ Use `uvx` for occasional runs, or install a persistent command:
50
+
51
+ ```bash
52
+ uv tool install create-forge
53
+ create-forge new
54
+ uv tool upgrade create-forge
55
+ ```
56
+
57
+ If the command is not on your PATH, run `uv tool update-shell` and restart
58
+ your terminal.
59
+
60
+ ### Choose a CLI version
61
+
62
+ ```bash
63
+ uvx create-forge@latest new
64
+ uvx create-forge@0.3.0 new
65
+ uv tool install "create-forge==0.3.0"
66
+ ```
67
+
68
+ Plain `uvx create-forge` can reuse a cached or persistently installed
69
+ version; `@latest` explicitly requests the latest release. Tool upgrades
70
+ respect the constraints used at installation, so an exact pin stays pinned.
71
+ To return to the latest release, run `uv tool install create-forge@latest`.
72
+ See [installation and versions](https://sandsy09.github.io/create-forge/installation/).
73
+
74
+ ## Everyday usage
75
+
76
+ | Command | Purpose |
77
+ | --- | --- |
78
+ | `uvx create-forge new` | Create a project interactively. |
79
+ | `uvx create-forge list` | List the bundled Copier templates. |
80
+ | `uvx create-forge update` | Update a Copier-generated project from its directory. |
81
+ | `uvx create-forge doctor` | Diagnose Python, Git, uv, and package compatibility. |
82
+ | `uvx create-forge config init` | Create an optional configuration file. |
83
+ | `uvx create-forge config show` | Show resolved configuration and its sources. |
84
+
85
+ For scripts and CI, provide a project name and skip questions with `--yes`:
86
+
87
+ ```bash
88
+ uvx create-forge new "My Library" --yes --data github_org=your-org --data build_backend=hatchling --data versioning=vcs
89
+ ```
90
+
91
+ Use `--path` to choose the destination and repeat `--data key=value` to
92
+ preset answers. Run `uvx create-forge new --help` for the default workflow's
93
+ options. Saved author details, GitHub organisation, and preferred template
94
+ are covered in the [CLI guide](https://sandsy09.github.io/create-forge/cli/).
95
+
96
+ ### Choose a template version or source
97
+
98
+ ```bash
99
+ uvx create-forge new "My Library" --template library --ref v0.4.1
100
+ uvx create-forge new "Custom Project" --template-url https://github.com/you/your-template
101
+ ```
102
+
103
+ `--ref` selects a Git revision in the **template repository**. It does not
104
+ select the CLI version. Without it, Copier uses the latest suitable release
105
+ tag. The bundled registry currently offers Library; upgrade the CLI to
106
+ receive registry changes.
107
+
108
+ Templates can execute code through generation and update tasks. Use custom
109
+ sources only when you trust their content; `--yes` also skips the custom
110
+ template confirmation.
111
+
112
+ ### Update a generated project
113
+
114
+ From a clean, committed Copier-generated project:
115
+
116
+ ```bash
117
+ uvx create-forge update --dry-run
118
+ uvx create-forge update
119
+ uv run poe check
120
+ ```
121
+
122
+ Keep `.copier-answers.yml` committed. Review the resulting diff and resolve
123
+ conflicts before committing. A dry run validates the update without applying
124
+ it; it does not produce a file-by-file diff. Use `update --ref v0.4.1` to
125
+ target a particular template version.
126
+
127
+ ## Preview: more project types and capabilities
128
+
129
+ The `0.3.0` CLI also provides an opt-in engine preview using
130
+ `forge-template>=0.4.1,<0.5`. These options are currently hidden from help.
131
+
132
+ | Project type | Use it for |
133
+ | --- | --- |
134
+ | Library | A distributable Python package with a choice of packaging modes. |
135
+ | CLI Application | A Typer application with a console command and tests. |
136
+ | Data Science | A Python package with a starter notebook and Jupyter tooling. |
137
+
138
+ Add **Jupyter** for notebook development or **Scientific Python** for NumPy,
139
+ pandas, Matplotlib, and scikit-learn. Data Science requires Jupyter;
140
+ Scientific Python is optional. These capabilities can also accompany the
141
+ other preview archetypes.
142
+
143
+ ```bash
144
+ uvx --from "create-forge[engine]==0.3.0" create-forge new "My Analysis" --engine-preview --archetype data-science --capability jupyter --yes --data license=mit
145
+ cd my-analysis
146
+ uv run --locked poe check
147
+ uv run poe notebook
148
+ ```
149
+
150
+ For regular preview use, install with `uv tool install "create-forge[engine]"`.
151
+ The [project guide](https://sandsy09.github.io/create-forge/projects/) explains
152
+ each type's output and links to complete recipes.
153
+
154
+ **Preview projects do not support `create-forge update`.** Their shared
155
+ tooling differs from the default Copier template; the preview does not
156
+ generate its CI workflows or install Git hooks. `--template`,
157
+ `--template-url`, and `--ref` apply only to the Copier workflow.
158
+
159
+ ## What's next
160
+
161
+ The Foundation and Data Science roadmaps are complete. Making the engine
162
+ the default generation workflow is a planned direction with no scheduled
163
+ release. Follow [open work](https://github.com/Sandsy09/create-forge/issues)
164
+ and [releases](https://github.com/Sandsy09/create-forge/releases) for updates,
165
+ or suggest a project type, capability, or guide you would find useful.
166
+
167
+ ## Feedback and contributing
168
+
169
+ - [Report a CLI problem or suggest a feature](https://github.com/Sandsy09/create-forge/issues/new/choose).
170
+ - [Request or correct documentation](https://github.com/Sandsy09/create-forge/issues/new?template=documentation.yml).
171
+ - [Report generated-content or capability problems](https://github.com/Sandsy09/forge-template/issues/new/choose).
172
+
173
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development and PR checks, and
174
+ the [reference index](https://sandsy09.github.io/create-forge/reference/) for
175
+ engine APIs and architecture documents. Report vulnerabilities through
176
+ [SECURITY.md](SECURITY.md).
177
+
178
+ ## License
179
+
180
+ MIT — see [LICENSE](LICENSE).
@@ -24,6 +24,23 @@ 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)
39
+ - [0034 — Publish create-forge 0.3.0 and close the Data Science roadmap](0034-publish-0-3-0-and-close-roadmap-v2.md)
40
+ - [0035 — Shared Forge user documentation](0035-shared-forge-user-documentation.md)
41
+ - [0036 — Keep credentials out of template sources and CLI diagnostics](0036-template-source-credentials.md)
42
+ - [0037 — Pin external Actions to reviewed commits and scope permissions per job](0037-immutable-workflow-actions.md)
43
+ - [0038 — Raise the Copier floor past the destination-escape advisories and hold uv](0038-dependency-floor-review.md)
27
44
 
28
45
  Add a new record by copying the most recent one and incrementing the number.
29
46
  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,57 @@
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
+ (ADR 0034) published create-forge `0.3.0` to PyPI, verified the released pair,
35
+ and closed CF-EPIC-14 and both Stage 13 and Stage 14 milestones. **The Data
36
+ Science roadmap is complete in both repositories.**
37
+
38
+ ## Repository roles
39
+
40
+ - **forge-template** owns the Data Science contract, capabilities, archetype,
41
+ composition review, generated content, and engine releases.
42
+ - **create-forge** owns discovery-driven user input, ProjectSpec construction,
43
+ diagnostics, staging, lock finalisation, and end-to-end client validation.
44
+
45
+ See the [architecture](ARCHITECTURE.md),
46
+ [ownership model](REPOSITORY-OWNERSHIP.md), and
47
+ [stage roadmap](ROADMAP.md) for the complete boundary.
48
+
49
+ ## Live GitHub work
50
+
51
+ Six epics and 24 child issues are filed across the two repositories. GitHub
52
+ issue bodies and native parent/dependency relationships are authoritative:
53
+
54
+ - [forge-template epic index](https://github.com/Sandsy09/forge-template/blob/main/docs/roadmap-v2/github-issues/forge-template/ISSUE-INDEX.md)
55
+ - [create-forge epic index](https://github.com/Sandsy09/create-forge/blob/main/docs/roadmap-v2/github-issues/create-forge/ISSUE-INDEX.md)
56
+ - [cross-repository dependency matrix](github-issues/CROSS-REPO-DEPENDENCIES.md)
57
+ - [GitHub setup and taxonomy](github-issues/GITHUB-SETUP.md)