create-forge 0.3.2__tar.gz → 0.4.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.
- {create_forge-0.3.2 → create_forge-0.4.0}/CHANGELOG.md +21 -1
- {create_forge-0.3.2 → create_forge-0.4.0}/PKG-INFO +66 -67
- {create_forge-0.3.2 → create_forge-0.4.0}/README.md +60 -61
- create_forge-0.4.0/docs/README.md +77 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/adr/README.md +10 -0
- create_forge-0.4.0/docs/roadmap-v3/README.md +62 -0
- create_forge-0.4.0/docs/roadmap-v3/roadmap/15-engine-default-provider-contracts/README.md +32 -0
- create_forge-0.4.0/docs/roadmap-v3/roadmap/16-engine-default-client-contracts/README.md +31 -0
- create_forge-0.4.0/docs/roadmap-v3/roadmap/17-engine-default-provider-implementation-and-release/README.md +34 -0
- create_forge-0.4.0/docs/roadmap-v3/roadmap/18-engine-default-client-delivery-and-validation/README.md +45 -0
- create_forge-0.4.0/docs/roadmap-v4/README.md +57 -0
- create_forge-0.4.0/docs/roadmap-v4/roadmap/19-streamlit-architecture-contracts/README.md +33 -0
- create_forge-0.4.0/docs/roadmap-v4/roadmap/20-streamlit-provider-implementation-and-release/README.md +32 -0
- create_forge-0.4.0/docs/roadmap-v4/roadmap/21-streamlit-client-adoption-and-rollout/README.md +31 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/pyproject.toml +29 -24
- create_forge-0.4.0/src/create_forge/_engine_worker.py +187 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/cli.py +785 -167
- create_forge-0.4.0/src/create_forge/compat.py +183 -0
- create_forge-0.4.0/src/create_forge/descriptors.py +189 -0
- create_forge-0.4.0/src/create_forge/engine.py +279 -0
- create_forge-0.4.0/src/create_forge/engine_source.py +367 -0
- create_forge-0.4.0/src/create_forge/lifecycle.py +133 -0
- create_forge-0.4.0/src/create_forge/pipeline.py +400 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/prompts.py +12 -12
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/sources.py +12 -4
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/spec.py +2 -23
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/staging.py +32 -3
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/templates.toml +5 -3
- create_forge-0.4.0/src/create_forge/update.py +632 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/conftest.py +10 -3
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/installed_client.py +81 -18
- create_forge-0.4.0/tests/legacy_template.py +96 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_cli.py +711 -172
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_component_selection.py +29 -37
- create_forge-0.4.0/tests/test_cutover_acceptance_contract.py +291 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_data_science_pipeline.py +43 -25
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_downstream_reference.py +3 -1
- create_forge-0.4.0/tests/test_e2e_engine_generation.py +729 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_e2e_generation.py +9 -6
- create_forge-0.4.0/tests/test_e2e_installed_cutover.py +793 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_e2e_installed_data_science.py +25 -15
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_e2e_installed_rollout.py +70 -48
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_engine_adapter.py +46 -37
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_engine_contract.py +158 -53
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_engine_cross_repository.py +15 -12
- create_forge-0.4.0/tests/test_engine_default_contract.py +182 -0
- create_forge-0.4.0/tests/test_engine_lifecycle_contract.py +242 -0
- create_forge-0.4.0/tests/test_engine_source.py +812 -0
- create_forge-0.4.0/tests/test_lifecycle.py +218 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_pipeline.py +114 -238
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_reference_client_boundary.py +1 -2
- create_forge-0.4.0/tests/test_roadmap_packs.py +132 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_sources.py +16 -4
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_spec.py +15 -34
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_staging.py +29 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_update.py +11 -68
- create_forge-0.4.0/tests/test_update_engine.py +733 -0
- create_forge-0.4.0/tests/test_update_routing.py +299 -0
- create_forge-0.4.0/tests/test_user_guide_recipes.py +68 -0
- create_forge-0.3.2/src/create_forge/compat.py +0 -57
- create_forge-0.3.2/src/create_forge/engine.py +0 -228
- create_forge-0.3.2/src/create_forge/pipeline.py +0 -310
- create_forge-0.3.2/tests/test_e2e_engine_generation.py +0 -415
- {create_forge-0.3.2 → create_forge-0.4.0}/.gitignore +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/LICENSE +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/00-governance-and-principles/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/01-python-core/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/02-developer-experience/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/03-quality-and-ci/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/04-runtime-and-configuration/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/05-security-and-supply-chain/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/06-extension-and-composition-contract/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/07-forge-cli-integration/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/08-reference-archetype-validation/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/roadmap/10-data-science-architecture-contract/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/roadmap/11-reusable-data-science-capabilities/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/roadmap/12-data-science-archetype/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/roadmap/13-data-science-cli-integration/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/docs/roadmap-v2/roadmap/14-data-science-validation-and-rollout/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/examples/README.md +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/__init__.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/config.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/models.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/registry.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/src/create_forge/runner.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/__init__.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_adr.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_archetype_parity.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_config.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_copier_cache.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_drift.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_labels.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_models.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_policy_hook.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_prompts.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_registry.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_runner.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_update_network.py +0 -0
- {create_forge-0.3.2 → create_forge-0.4.0}/tests/test_workflows.py +0 -0
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
3
|
Generated by git-cliff from Conventional Commits.
|
|
4
|
+
## [0.4.0] - 2026-09-14
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
- Reconcile living documentation with the 0.3 release line (#148)
|
|
9
|
+
- Prepare engine-default and Streamlit roadmap packs
|
|
10
|
+
- Record filed cross-repository roadmaps
|
|
11
|
+
- Define engine-default selection and source-resolution UX (#155) (#169)
|
|
12
|
+
- Define update dispatch, migration and filesystem lifecycle (#156) (#170)
|
|
13
|
+
- Approve coordinated cutover acceptance and support policy (#157) (#171)
|
|
14
|
+
- Consolidate CLAUDE.md and CONTRIBUTING.md behind a docs index (#173)
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- Make the engine the default new path (CF-18.01)
|
|
19
|
+
- Implement isolated --engine-source overrides (CF-18.02) (#174)
|
|
20
|
+
- Implement engine generation finalisation, Git and hooks (CF-18.03) (#175)
|
|
21
|
+
- Implement engine-native project updates (CF-18.04) (#176)
|
|
22
|
+
- Preserve legacy Copier workflows and reject preview projects (CF-18.05) (#177)
|
|
23
|
+
- Complete installed cutover regressions and migration docs (CF-18.06) (#178)
|
|
4
24
|
## [0.3.2] - 2026-09-08
|
|
5
25
|
|
|
6
26
|
### Features
|
|
7
27
|
|
|
8
|
-
- Diagnose the Copier template cache
|
|
28
|
+
- Diagnose the Copier template cache (#147)
|
|
9
29
|
## [0.3.1] - 2026-09-08
|
|
10
30
|
|
|
11
31
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: create-forge
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.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
|
|
@@ -20,16 +20,16 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
20
20
|
Classifier: Topic :: Software Development :: Code Generators
|
|
21
21
|
Classifier: Typing :: Typed
|
|
22
22
|
Requires-Python: >=3.11
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist: platformdirs>=4.3.6
|
|
23
|
+
Requires-Dist: forge-template<0.6,>=0.5
|
|
25
24
|
Requires-Dist: pydantic>=2.10
|
|
26
25
|
Requires-Dist: pyyaml>=6.0
|
|
27
26
|
Requires-Dist: questionary>=2.0
|
|
28
27
|
Requires-Dist: rich>=13.9
|
|
29
28
|
Requires-Dist: typer>=0.16
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: uv<0.13,>=0.12
|
|
30
|
+
Provides-Extra: legacy
|
|
31
|
+
Requires-Dist: copier<10,>=9.16; extra == 'legacy'
|
|
32
|
+
Requires-Dist: platformdirs>=4.3.6; extra == 'legacy'
|
|
33
33
|
Description-Content-Type: text/markdown
|
|
34
34
|
|
|
35
35
|
# create-forge
|
|
@@ -46,11 +46,12 @@ uvx create-forge new
|
|
|
46
46
|
|
|
47
47
|
Requires [uv](https://docs.astral.sh/uv/getting-started/installation/), Git,
|
|
48
48
|
and Python 3.11+ (uv can install Python for you). Configure your Git author
|
|
49
|
-
name and email before generating a
|
|
50
|
-
creates local commits.
|
|
49
|
+
name and email before generating a project: generation creates local commits.
|
|
51
50
|
|
|
52
51
|
**[Read the Forge user guide](https://sandsy09.github.io/create-forge/)**
|
|
53
|
-
for walkthroughs,
|
|
52
|
+
for walkthroughs, project types, and troubleshooting. Coming from a `0.3.x`
|
|
53
|
+
install or project? Start with the
|
|
54
|
+
[migration guide](https://sandsy09.github.io/create-forge/migration/).
|
|
54
55
|
|
|
55
56
|
## How the repositories fit together
|
|
56
57
|
|
|
@@ -75,8 +76,11 @@ uv, Ruff, pytest with coverage, mypy and/or pyright, pre-commit hooks, and
|
|
|
75
76
|
GitHub Actions CI. Choose your build backend, versioning, license, and
|
|
76
77
|
dependency-update tooling. MkDocs documentation is optional.
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
`new` discovers project types and capabilities directly from the
|
|
80
|
+
`forge-template` engine, constructs a ProjectSpec, and renders through its
|
|
81
|
+
public facade — no template repository to clone. Generation also runs
|
|
82
|
+
`git init`, an initial commit, and installs any pre-commit hooks the project
|
|
83
|
+
carries.
|
|
80
84
|
|
|
81
85
|
## Install and manage the tool
|
|
82
86
|
|
|
@@ -95,8 +99,8 @@ your terminal.
|
|
|
95
99
|
|
|
96
100
|
```bash
|
|
97
101
|
uvx create-forge@latest new
|
|
98
|
-
uvx create-forge@0.
|
|
99
|
-
uv tool install "create-forge==0.
|
|
102
|
+
uvx create-forge@0.4.0 new
|
|
103
|
+
uv tool install "create-forge==0.4.0"
|
|
100
104
|
```
|
|
101
105
|
|
|
102
106
|
Plain `uvx create-forge` can reuse a cached or persistently installed
|
|
@@ -110,8 +114,8 @@ See [installation and versions](https://sandsy09.github.io/create-forge/installa
|
|
|
110
114
|
| Command | Purpose |
|
|
111
115
|
| --- | --- |
|
|
112
116
|
| `uvx create-forge new` | Create a project interactively. |
|
|
113
|
-
| `uvx create-forge list` | List the
|
|
114
|
-
| `uvx create-forge update` | Update a
|
|
117
|
+
| `uvx create-forge list` | List the discovered project types and capabilities. |
|
|
118
|
+
| `uvx create-forge update` | Update a generated project from its directory. |
|
|
115
119
|
| `uvx create-forge doctor` | Diagnose Python, Git, uv, and package compatibility. |
|
|
116
120
|
| `uvx create-forge config init` | Create an optional configuration file. |
|
|
117
121
|
| `uvx create-forge config show` | Show resolved configuration and its sources. |
|
|
@@ -122,30 +126,40 @@ For scripts and CI, provide a project name and skip questions with `--yes`:
|
|
|
122
126
|
uvx create-forge new "My Library" --yes --data github_org=your-org --data build_backend=hatchling --data versioning=vcs
|
|
123
127
|
```
|
|
124
128
|
|
|
125
|
-
Use `--path` to choose the destination
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
are covered in
|
|
129
|
+
Use `--path` to choose the destination, `--archetype`/`--capability` to
|
|
130
|
+
preselect a project type, and repeat `--data key=value` to preset answers.
|
|
131
|
+
Run `uvx create-forge new --help` for the default workflow's options. Saved
|
|
132
|
+
author details, GitHub organisation, and preferred archetype are covered in
|
|
133
|
+
the [CLI guide](https://sandsy09.github.io/create-forge/cli/).
|
|
129
134
|
|
|
130
|
-
###
|
|
135
|
+
### More project types and capabilities
|
|
131
136
|
|
|
132
137
|
```bash
|
|
133
|
-
uvx create-forge new "My
|
|
134
|
-
|
|
138
|
+
uvx create-forge new "My Analysis" --archetype data-science --capability jupyter --yes --data license=mit
|
|
139
|
+
cd my-analysis
|
|
140
|
+
uv run --locked poe check
|
|
141
|
+
uv run poe notebook
|
|
135
142
|
```
|
|
136
143
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
144
|
+
Available types include Library, CLI Application, and Data Science (a Python
|
|
145
|
+
package with a starter notebook and Jupyter tooling), plus optional
|
|
146
|
+
**Jupyter** and **Scientific Python** capabilities (Data Science requires
|
|
147
|
+
Jupyter; Scientific Python is optional and can accompany any archetype). The
|
|
148
|
+
[project guide](https://sandsy09.github.io/create-forge/projects/) explains
|
|
149
|
+
each type's output.
|
|
141
150
|
|
|
142
|
-
|
|
143
|
-
sources only when you trust their content; `--yes` also skips the custom
|
|
144
|
-
template confirmation.
|
|
151
|
+
### Isolated engine overrides
|
|
145
152
|
|
|
146
|
-
|
|
153
|
+
```bash
|
|
154
|
+
uvx create-forge new "Custom" --engine-source https://github.com/you/your-engine-fork --engine-ref v0.5.1
|
|
155
|
+
```
|
|
147
156
|
|
|
148
|
-
|
|
157
|
+
`--engine-source`/`--engine-ref` provision an isolated environment for
|
|
158
|
+
cross-repository development against a fork or unreleased engine revision,
|
|
159
|
+
separate from your ordinary install. Use custom sources only when you trust
|
|
160
|
+
their content; `--yes` also skips the confirmation prompt.
|
|
161
|
+
|
|
162
|
+
### Update a generated project
|
|
149
163
|
|
|
150
164
|
```bash
|
|
151
165
|
uvx create-forge update --dry-run
|
|
@@ -153,50 +167,35 @@ uvx create-forge update
|
|
|
153
167
|
uv run poe check
|
|
154
168
|
```
|
|
155
169
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
target a
|
|
170
|
+
`update` runs the engine-native Git-backed three-way merge against the
|
|
171
|
+
project's committed `.forge/generation.json`. Review the resulting diff and
|
|
172
|
+
resolve any conflict markers before committing. `--dry-run` prints the
|
|
173
|
+
per-target classification without writing anything; a failed or interrupted
|
|
174
|
+
update always leaves a recoverable working tree, printed on request:
|
|
175
|
+
`git restore . && git clean -fd`.
|
|
160
176
|
|
|
161
|
-
##
|
|
162
|
-
|
|
163
|
-
The `0.3.0` CLI also provides an opt-in engine preview using
|
|
164
|
-
`forge-template>=0.4.1,<0.5`. These options are currently hidden from help.
|
|
165
|
-
|
|
166
|
-
| Project type | Use it for |
|
|
167
|
-
| --- | --- |
|
|
168
|
-
| Library | A distributable Python package with a choice of packaging modes. |
|
|
169
|
-
| CLI Application | A Typer application with a console command and tests. |
|
|
170
|
-
| Data Science | A Python package with a starter notebook and Jupyter tooling. |
|
|
171
|
-
|
|
172
|
-
Add **Jupyter** for notebook development or **Scientific Python** for NumPy,
|
|
173
|
-
pandas, Matplotlib, and scikit-learn. Data Science requires Jupyter;
|
|
174
|
-
Scientific Python is optional. These capabilities can also accompany the
|
|
175
|
-
other preview archetypes.
|
|
177
|
+
## The `--legacy` Copier route
|
|
176
178
|
|
|
177
179
|
```bash
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
uv run --locked poe check
|
|
181
|
-
uv run poe notebook
|
|
180
|
+
uv tool install "create-forge[legacy]"
|
|
181
|
+
uvx --from "create-forge[legacy]" create-forge new "My Library" --legacy --template library --ref v0.4.1
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
generate its CI workflows or install Git hooks. `--template`,
|
|
191
|
-
`--template-url`, and `--ref` apply only to the Copier workflow.
|
|
184
|
+
`--legacy` renders directly from the bundled Copier registry instead of the
|
|
185
|
+
engine — the original `create-forge` architecture, still fully supported.
|
|
186
|
+
`--template`, `--template-url`, and `--ref` select the template and version
|
|
187
|
+
under this route; `create-forge update` against a `.copier-answers.yml`
|
|
188
|
+
project runs `copier update`. The `legacy` extra installs `copier`; without
|
|
189
|
+
it, `--legacy` exits `3` naming the remedy.
|
|
192
190
|
|
|
193
191
|
## What's next
|
|
194
192
|
|
|
195
|
-
The Foundation
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
193
|
+
The Foundation, Data Science, and Engine-Default Cutover roadmaps are
|
|
194
|
+
complete. The filed [Streamlit Archetype](docs/roadmap-v4/README.md) roadmap
|
|
195
|
+
describes the next project type. Follow
|
|
196
|
+
[open work](https://github.com/Sandsy09/create-forge/issues) and
|
|
197
|
+
[releases](https://github.com/Sandsy09/create-forge/releases) for updates, or
|
|
198
|
+
suggest a project type, capability, or guide you would find useful.
|
|
200
199
|
|
|
201
200
|
## Feedback and contributing
|
|
202
201
|
|
|
@@ -12,11 +12,12 @@ uvx create-forge new
|
|
|
12
12
|
|
|
13
13
|
Requires [uv](https://docs.astral.sh/uv/getting-started/installation/), Git,
|
|
14
14
|
and Python 3.11+ (uv can install Python for you). Configure your Git author
|
|
15
|
-
name and email before generating a
|
|
16
|
-
creates local commits.
|
|
15
|
+
name and email before generating a project: generation creates local commits.
|
|
17
16
|
|
|
18
17
|
**[Read the Forge user guide](https://sandsy09.github.io/create-forge/)**
|
|
19
|
-
for walkthroughs,
|
|
18
|
+
for walkthroughs, project types, and troubleshooting. Coming from a `0.3.x`
|
|
19
|
+
install or project? Start with the
|
|
20
|
+
[migration guide](https://sandsy09.github.io/create-forge/migration/).
|
|
20
21
|
|
|
21
22
|
## How the repositories fit together
|
|
22
23
|
|
|
@@ -41,8 +42,11 @@ uv, Ruff, pytest with coverage, mypy and/or pyright, pre-commit hooks, and
|
|
|
41
42
|
GitHub Actions CI. Choose your build backend, versioning, license, and
|
|
42
43
|
dependency-update tooling. MkDocs documentation is optional.
|
|
43
44
|
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
`new` discovers project types and capabilities directly from the
|
|
46
|
+
`forge-template` engine, constructs a ProjectSpec, and renders through its
|
|
47
|
+
public facade — no template repository to clone. Generation also runs
|
|
48
|
+
`git init`, an initial commit, and installs any pre-commit hooks the project
|
|
49
|
+
carries.
|
|
46
50
|
|
|
47
51
|
## Install and manage the tool
|
|
48
52
|
|
|
@@ -61,8 +65,8 @@ your terminal.
|
|
|
61
65
|
|
|
62
66
|
```bash
|
|
63
67
|
uvx create-forge@latest new
|
|
64
|
-
uvx create-forge@0.
|
|
65
|
-
uv tool install "create-forge==0.
|
|
68
|
+
uvx create-forge@0.4.0 new
|
|
69
|
+
uv tool install "create-forge==0.4.0"
|
|
66
70
|
```
|
|
67
71
|
|
|
68
72
|
Plain `uvx create-forge` can reuse a cached or persistently installed
|
|
@@ -76,8 +80,8 @@ See [installation and versions](https://sandsy09.github.io/create-forge/installa
|
|
|
76
80
|
| Command | Purpose |
|
|
77
81
|
| --- | --- |
|
|
78
82
|
| `uvx create-forge new` | Create a project interactively. |
|
|
79
|
-
| `uvx create-forge list` | List the
|
|
80
|
-
| `uvx create-forge update` | Update a
|
|
83
|
+
| `uvx create-forge list` | List the discovered project types and capabilities. |
|
|
84
|
+
| `uvx create-forge update` | Update a generated project from its directory. |
|
|
81
85
|
| `uvx create-forge doctor` | Diagnose Python, Git, uv, and package compatibility. |
|
|
82
86
|
| `uvx create-forge config init` | Create an optional configuration file. |
|
|
83
87
|
| `uvx create-forge config show` | Show resolved configuration and its sources. |
|
|
@@ -88,30 +92,40 @@ For scripts and CI, provide a project name and skip questions with `--yes`:
|
|
|
88
92
|
uvx create-forge new "My Library" --yes --data github_org=your-org --data build_backend=hatchling --data versioning=vcs
|
|
89
93
|
```
|
|
90
94
|
|
|
91
|
-
Use `--path` to choose the destination
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
are covered in
|
|
95
|
+
Use `--path` to choose the destination, `--archetype`/`--capability` to
|
|
96
|
+
preselect a project type, and repeat `--data key=value` to preset answers.
|
|
97
|
+
Run `uvx create-forge new --help` for the default workflow's options. Saved
|
|
98
|
+
author details, GitHub organisation, and preferred archetype are covered in
|
|
99
|
+
the [CLI guide](https://sandsy09.github.io/create-forge/cli/).
|
|
95
100
|
|
|
96
|
-
###
|
|
101
|
+
### More project types and capabilities
|
|
97
102
|
|
|
98
103
|
```bash
|
|
99
|
-
uvx create-forge new "My
|
|
100
|
-
|
|
104
|
+
uvx create-forge new "My Analysis" --archetype data-science --capability jupyter --yes --data license=mit
|
|
105
|
+
cd my-analysis
|
|
106
|
+
uv run --locked poe check
|
|
107
|
+
uv run poe notebook
|
|
101
108
|
```
|
|
102
109
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
Available types include Library, CLI Application, and Data Science (a Python
|
|
111
|
+
package with a starter notebook and Jupyter tooling), plus optional
|
|
112
|
+
**Jupyter** and **Scientific Python** capabilities (Data Science requires
|
|
113
|
+
Jupyter; Scientific Python is optional and can accompany any archetype). The
|
|
114
|
+
[project guide](https://sandsy09.github.io/create-forge/projects/) explains
|
|
115
|
+
each type's output.
|
|
107
116
|
|
|
108
|
-
|
|
109
|
-
sources only when you trust their content; `--yes` also skips the custom
|
|
110
|
-
template confirmation.
|
|
117
|
+
### Isolated engine overrides
|
|
111
118
|
|
|
112
|
-
|
|
119
|
+
```bash
|
|
120
|
+
uvx create-forge new "Custom" --engine-source https://github.com/you/your-engine-fork --engine-ref v0.5.1
|
|
121
|
+
```
|
|
113
122
|
|
|
114
|
-
|
|
123
|
+
`--engine-source`/`--engine-ref` provision an isolated environment for
|
|
124
|
+
cross-repository development against a fork or unreleased engine revision,
|
|
125
|
+
separate from your ordinary install. Use custom sources only when you trust
|
|
126
|
+
their content; `--yes` also skips the confirmation prompt.
|
|
127
|
+
|
|
128
|
+
### Update a generated project
|
|
115
129
|
|
|
116
130
|
```bash
|
|
117
131
|
uvx create-forge update --dry-run
|
|
@@ -119,50 +133,35 @@ uvx create-forge update
|
|
|
119
133
|
uv run poe check
|
|
120
134
|
```
|
|
121
135
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
target a
|
|
136
|
+
`update` runs the engine-native Git-backed three-way merge against the
|
|
137
|
+
project's committed `.forge/generation.json`. Review the resulting diff and
|
|
138
|
+
resolve any conflict markers before committing. `--dry-run` prints the
|
|
139
|
+
per-target classification without writing anything; a failed or interrupted
|
|
140
|
+
update always leaves a recoverable working tree, printed on request:
|
|
141
|
+
`git restore . && git clean -fd`.
|
|
126
142
|
|
|
127
|
-
##
|
|
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.
|
|
143
|
+
## The `--legacy` Copier route
|
|
142
144
|
|
|
143
145
|
```bash
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
uv run --locked poe check
|
|
147
|
-
uv run poe notebook
|
|
146
|
+
uv tool install "create-forge[legacy]"
|
|
147
|
+
uvx --from "create-forge[legacy]" create-forge new "My Library" --legacy --template library --ref v0.4.1
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
generate its CI workflows or install Git hooks. `--template`,
|
|
157
|
-
`--template-url`, and `--ref` apply only to the Copier workflow.
|
|
150
|
+
`--legacy` renders directly from the bundled Copier registry instead of the
|
|
151
|
+
engine — the original `create-forge` architecture, still fully supported.
|
|
152
|
+
`--template`, `--template-url`, and `--ref` select the template and version
|
|
153
|
+
under this route; `create-forge update` against a `.copier-answers.yml`
|
|
154
|
+
project runs `copier update`. The `legacy` extra installs `copier`; without
|
|
155
|
+
it, `--legacy` exits `3` naming the remedy.
|
|
158
156
|
|
|
159
157
|
## What's next
|
|
160
158
|
|
|
161
|
-
The Foundation
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
The Foundation, Data Science, and Engine-Default Cutover roadmaps are
|
|
160
|
+
complete. The filed [Streamlit Archetype](docs/roadmap-v4/README.md) roadmap
|
|
161
|
+
describes the next project type. Follow
|
|
162
|
+
[open work](https://github.com/Sandsy09/create-forge/issues) and
|
|
163
|
+
[releases](https://github.com/Sandsy09/create-forge/releases) for updates, or
|
|
164
|
+
suggest a project type, capability, or guide you would find useful.
|
|
166
165
|
|
|
167
166
|
## Feedback and contributing
|
|
168
167
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Canonical contracts
|
|
2
|
+
|
|
3
|
+
This is the index of `create-forge`'s living contract documents — the
|
|
4
|
+
`docs/*.md` files that fix behaviour a test or an ADR treats as binding, as
|
|
5
|
+
opposed to prose that merely describes the code. [CLAUDE.md](../CLAUDE.md) and
|
|
6
|
+
[CONTRIBUTING.md](../CONTRIBUTING.md) point here rather than restating this
|
|
7
|
+
list; several entries have their own link-audit test in
|
|
8
|
+
[tests/test_engine_contract.py](../tests/test_engine_contract.py) or
|
|
9
|
+
[tests/test_reference_client_boundary.py](../tests/test_reference_client_boundary.py)
|
|
10
|
+
requiring them to stay linked from here.
|
|
11
|
+
|
|
12
|
+
A contract changes in the same pull request as the behaviour it describes.
|
|
13
|
+
Records are living documents, not immutable like an ADR — but a change to one
|
|
14
|
+
still usually cites the ADR that authorised it.
|
|
15
|
+
|
|
16
|
+
## CLI surface
|
|
17
|
+
|
|
18
|
+
| Contract | Governs |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| [cli-conventions.md](cli-conventions.md) | Input precedence, prompt-skipping, interactive/non-interactive parity, validation ownership, exit statuses. |
|
|
21
|
+
| [component-selection.md](component-selection.md) | `--capability`/`--platform`/`--component-option` flags, absent-vs-explicit-empty, precedence, prompt order (ADR 0027). |
|
|
22
|
+
| [engine-default-cli.md](engine-default-cli.md) | The post-cutover command surface: engine as the default `new` path, `--legacy`, `--engine-source`/`--engine-ref` (ADR 0040). |
|
|
23
|
+
| [engine-project-lifecycle.md](engine-project-lifecycle.md) | Post-generation `git init`/commit/hooks, `.forge/generation.json`, and `update` dispatch (ADR 0041). |
|
|
24
|
+
| [engine-cutover-acceptance.md](engine-cutover-acceptance.md) | The cutover release, supported OS/Python/install matrix, acceptance gates, support and deprecation windows (ADR 0042). |
|
|
25
|
+
|
|
26
|
+
## Engine boundary
|
|
27
|
+
|
|
28
|
+
| Contract | Governs |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| [integration-contract.md](integration-contract.md) | The evolving package/protocol compatibility rules with `forge-template` (ADR 0010). Its compatibility table is asserted byte-exact by a test. |
|
|
31
|
+
| [engine-resolution.md](engine-resolution.md) | How the engine package is sourced, overridden locally, diagnosed, and rejected when incompatible (ADR 0011). |
|
|
32
|
+
| [engine-updates.md](engine-updates.md) | How a compatibility-line dependency bump is adopted, how a breaking line is crossed, and what Dependabot may never do alone (ADR 0012). |
|
|
33
|
+
| [project-spec-construction.md](project-spec-construction.md) | The CLI-answer-to-ProjectSpec field mapping and validation `spec.py`/`engine.py` implement (ADR 0013). |
|
|
34
|
+
| [component-discovery.md](component-discovery.md) | Protocol negotiation, descriptor ownership, and the no-fallback trust boundary in `engine.py`. |
|
|
35
|
+
| [engine-contract-tests.md](engine-contract-tests.md) | The supported package/protocol range and the sibling-checkout contract-test command. |
|
|
36
|
+
| [downstream-client-reference.md](downstream-client-reference.md) | `examples/downstream_cli.py` — a second, independent client proving no `create-forge` dependency is required (ADR 0023). |
|
|
37
|
+
| [organisation-policy-consumption.md](organisation-policy-consumption.md) | The `SelectionRequest`/`SelectionProvenance` seam, and why `create-forge` ships no policy parser (ADR 0022). |
|
|
38
|
+
|
|
39
|
+
## Filesystem and tests
|
|
40
|
+
|
|
41
|
+
| Contract | Governs |
|
|
42
|
+
| --- | --- |
|
|
43
|
+
| [filesystem-generation.md](filesystem-generation.md) | Destination-conflict, staging, finalisation, and cleanup rules in `staging.py` (ADR 0015). |
|
|
44
|
+
| [end-to-end-tests.md](end-to-end-tests.md) | The fast/`network`/`e2e` test-tier split and what the real console script is proven to do (ADR 0016). |
|
|
45
|
+
|
|
46
|
+
## Validation records
|
|
47
|
+
|
|
48
|
+
Acceptance-checklist-to-named-test maps, each closing an epic or a release.
|
|
49
|
+
|
|
50
|
+
| Contract | Governs |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| [data-science-preview-validation.md](data-science-preview-validation.md) | CF-EPIC-13's acceptance checklist against the Data Science preview pipeline (ADR 0030). |
|
|
53
|
+
| [installed-data-science-validation.md](installed-data-science-validation.md) | Both Data Science compositions through the installed candidate wheel (ADR 0032). |
|
|
54
|
+
| [rollout-regression-validation.md](rollout-regression-validation.md) | Library/CLI Application engine paths, the engine-less default, and the full selection/option/destination/lock/cleanup failure matrix (ADR 0033). |
|
|
55
|
+
| [release-0-3-0-validation.md](release-0-3-0-validation.md) | The published `create-forge 0.3.0` / `forge-template 0.4.1` pair verified against its own artefacts (ADR 0034). |
|
|
56
|
+
| [engine-cutover-validation.md](engine-cutover-validation.md) | The installed-console cutover acceptance matrix's remaining rows, and the rewritten user guide (ADR 0048). |
|
|
57
|
+
| [release-0-4-0-validation.md](release-0-4-0-validation.md) | The published `create-forge 0.4.0` / `forge-template 0.5.0` pair verified against its own artefacts, and the Engine-Default Cutover roadmap close-out (ADR 0049). |
|
|
58
|
+
|
|
59
|
+
## Process and security
|
|
60
|
+
|
|
61
|
+
| Contract | Governs |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| [workflow-security.md](workflow-security.md) | SHA-pinning external Actions and per-job `permissions:` scoping (ADR 0037). |
|
|
64
|
+
| [cross-repository-workflow.md](cross-repository-workflow.md) | Validating sibling `create-forge`/`forge-template` checkouts before merge or release. |
|
|
65
|
+
| [ADR 0024](adr/0024-reference-client-not-framework-dependency.md) | `create-forge` is one reference client, not a framework dependency for the engine or generated projects. |
|
|
66
|
+
| [ADR 0037](adr/0037-immutable-workflow-actions.md) | The SHA-pinning and permissions rule `workflow-security.md` records. |
|
|
67
|
+
|
|
68
|
+
## Elsewhere
|
|
69
|
+
|
|
70
|
+
- [docs/adr/README.md](adr/README.md) — the full Architecture Decision Record
|
|
71
|
+
index, in Nygard format.
|
|
72
|
+
- [docs/roadmap-v1/](roadmap-v1/) through [docs/roadmap-v4/](roadmap-v4/) —
|
|
73
|
+
completed and in-flight cross-repository roadmaps.
|
|
74
|
+
- [docs/user-guide/](user-guide/) — the published
|
|
75
|
+
[Forge user guide](https://sandsy09.github.io/create-forge/) (end-user
|
|
76
|
+
docs; source of `reference.md`'s own technical-reference index for engine
|
|
77
|
+
APIs hosted in `forge-template`).
|
|
@@ -42,6 +42,16 @@ format](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
|
|
|
42
42
|
- [0037 — Pin external Actions to reviewed commits and scope permissions per job](0037-immutable-workflow-actions.md)
|
|
43
43
|
- [0038 — Raise the Copier floor past the destination-escape advisories and hold uv](0038-dependency-floor-review.md)
|
|
44
44
|
- [0039 — Diagnose the Copier template cache](0039-copier-cache-diagnostics.md)
|
|
45
|
+
- [0040 — Define engine-default selection and source-resolution UX](0040-engine-default-selection-and-source-resolution.md)
|
|
46
|
+
- [0041 — Define engine project lifecycle and update dispatch](0041-engine-project-lifecycle-and-update-dispatch.md)
|
|
47
|
+
- [0042 — Approve the engine-default cutover acceptance and support policy](0042-engine-cutover-acceptance-and-support-policy.md)
|
|
48
|
+
- [0043 — Consolidate CLAUDE.md and CONTRIBUTING.md behind a docs index](0043-consolidate-contributor-documentation.md)
|
|
49
|
+
- [0044 — Run `--engine-source` overrides out of process](0044-out-of-process-engine-source-overrides.md)
|
|
50
|
+
- [0045 — Run the engine `new` Git/hook lifecycle in a new module, and refuse the excluded targets it makes load-bearing](0045-engine-generation-lifecycle-and-staging-exclusions.md)
|
|
51
|
+
- [0046 — Apply the engine-native update client-side with `git merge-file`, and reproduce the old render with a version-match short-circuit](0046-engine-native-update-application.md)
|
|
52
|
+
- [0047 — Reject a pre-cutover `--engine-preview` project with one diagnostic, add no migration helper, and keep the Copier route reachable without a usable engine](0047-legacy-copier-retention-and-preview-transition.md)
|
|
53
|
+
- [0048 — Complete the installed cutover acceptance evidence and the user guide's post-cutover voice](0048-installed-cutover-acceptance-evidence.md)
|
|
54
|
+
- [0049 — Publish create-forge 0.4.0 and close the Engine-Default Cutover roadmap](0049-publish-0-4-0-and-close-roadmap-v3.md)
|
|
45
55
|
|
|
46
56
|
Add a new record by copying the most recent one and incrementing the number.
|
|
47
57
|
Records are immutable: supersede them rather than editing.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Engine-Default Cutover roadmap
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Filed and open. This pack records 5 repository-owned epics and
|
|
6
|
+
21 children for Stages 15–18, with verified issue numbers, labels,
|
|
7
|
+
milestones, native parents and direct dependencies. No release or runtime
|
|
8
|
+
implementation is claimed by these planning documents.
|
|
9
|
+
|
|
10
|
+
The `create-forge`-side implementation this pack planned is complete on
|
|
11
|
+
`main`: CF-18.01 through CF-18.06 shipped the engine-default cutover, and
|
|
12
|
+
CF-18.07 ([#164](https://github.com/Sandsy09/create-forge/issues/164), ADR
|
|
13
|
+
0049) is publishing it as `create-forge 0.4.0`, gated on
|
|
14
|
+
[FT-18.01](https://github.com/Sandsy09/forge-template/issues/156)'s
|
|
15
|
+
provider-side integrated validation. See `docs/release-0-4-0-validation.md`
|
|
16
|
+
for the publication evidence once it lands.
|
|
17
|
+
|
|
18
|
+
Working engine-native updates and continued support for existing Copier
|
|
19
|
+
projects gate the engine-default release. Detailed architecture remains
|
|
20
|
+
subject to the explicit decision children.
|
|
21
|
+
|
|
22
|
+
## Read this pack
|
|
23
|
+
|
|
24
|
+
- [Stage overview](ROADMAP.md)
|
|
25
|
+
- [Architecture and decision boundaries](ARCHITECTURE.md)
|
|
26
|
+
- [Repository ownership](REPOSITORY-OWNERSHIP.md)
|
|
27
|
+
- [Review traceability](TRACEABILITY.md)
|
|
28
|
+
- [GitHub filing record and reconciliation procedure](github-issues/GITHUB-SETUP.md)
|
|
29
|
+
- [Direct dependency matrix](github-issues/CROSS-REPO-DEPENDENCIES.md)
|
|
30
|
+
- [Client issue index](github-issues/create-forge/ISSUE-INDEX.md)
|
|
31
|
+
- [Provider issue index](github-issues/forge-template/ISSUE-INDEX.md)
|
|
32
|
+
- [Machine-readable filing manifest](github-issues/filing-manifest.json)
|
|
33
|
+
|
|
34
|
+
## Coordination
|
|
35
|
+
|
|
36
|
+
The two packs are mirrored in both repositories. The reviewed manifest and
|
|
37
|
+
complete bodies record the filed state. GitHub bodies and native relationships
|
|
38
|
+
are authoritative; update both mirrors when decisions alter scope or
|
|
39
|
+
dependencies. Never invent or reuse GitHub numbers.
|
|
40
|
+
|
|
41
|
+
The next [Streamlit roadmap](../roadmap-v4/README.md) shares the contract
|
|
42
|
+
gates. Preserve completed roadmap-v1/v2 records and historical ADRs.
|
|
43
|
+
|
|
44
|
+
## Filed-state validation
|
|
45
|
+
|
|
46
|
+
From either repository root:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uv run python scripts/check_roadmaps.py
|
|
50
|
+
uv run poe check
|
|
51
|
+
uv run pre-commit run --all-files
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For a normal sibling layout, compare from create-forge with
|
|
55
|
+
`uv run python scripts/check_roadmaps.py --mirror ../forge-template`,
|
|
56
|
+
or from forge-template with
|
|
57
|
+
`uv run python scripts/check_roadmaps.py --mirror ../create-forge`.
|
|
58
|
+
Use an absolute mirror path when reviewing an isolated worktree.
|
|
59
|
+
The checker reads both packs, validates links/anchors and the filing graph,
|
|
60
|
+
and compares mirrored bytes and shared label manifests when requested.
|
|
61
|
+
It performs no GitHub writes. The create-forge shared guide also requires
|
|
62
|
+
`uv run poe docs:build`; provider technical docs are not a MkDocs site.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Stage 15 — Engine-Default Provider Contracts
|
|
2
|
+
|
|
3
|
+
## Status and epics
|
|
4
|
+
|
|
5
|
+
Filed and open.
|
|
6
|
+
[FT-EPIC-15](https://github.com/Sandsy09/forge-template/issues/141).
|
|
7
|
+
|
|
8
|
+
## Entry criteria
|
|
9
|
+
|
|
10
|
+
Follow each child's direct blockers below. Contract approval unblocks design;
|
|
11
|
+
provider publication unblocks adoption. A blocked child must not begin before
|
|
12
|
+
its required decision or immutable hand-off is accepted.
|
|
13
|
+
|
|
14
|
+
## Child work
|
|
15
|
+
|
|
16
|
+
| Child | Outcome | Direct blockers |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| [FT-15.01](https://github.com/Sandsy09/forge-template/issues/146) | Account for every supported behaviour, generated concern and explicit exclusion. | None |
|
|
19
|
+
| [FT-15.02](https://github.com/Sandsy09/forge-template/issues/147) | Specify versioned metadata, output ownership and reproducible old/new render requirements. | [FT-15.01](https://github.com/Sandsy09/forge-template/issues/146) |
|
|
20
|
+
| [FT-15.03](https://github.com/Sandsy09/forge-template/issues/148) | Assign concerns to Foundation, archetypes, capabilities and platforms; identify necessary extension points. | [FT-15.01](https://github.com/Sandsy09/forge-template/issues/146) |
|
|
21
|
+
| [FT-15.04](https://github.com/Sandsy09/forge-template/issues/149) | Classify public API/protocol changes and approve the provider acceptance matrix. | [FT-15.02](https://github.com/Sandsy09/forge-template/issues/147), [FT-15.03](https://github.com/Sandsy09/forge-template/issues/148) |
|
|
22
|
+
|
|
23
|
+
## Exit criteria
|
|
24
|
+
|
|
25
|
+
All stage-owned children have reviewed completion evidence. Resolve acceptance
|
|
26
|
+
criteria through their named owner and keep scope within the approved contracts.
|
|
27
|
+
|
|
28
|
+
## Non-goals
|
|
29
|
+
|
|
30
|
+
No unrelated operational work, new archetype outside this roadmap, remote
|
|
31
|
+
component registry or plugin system. Contract-only stages make no runtime,
|
|
32
|
+
generated-content, dependency, version or release changes.
|