forge-template 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.
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/labels.toml +6 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/pull_request_template.md +2 -2
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/workflows/release.yml +18 -6
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/workflows/test-template.yml +4 -3
- forge_template-0.4.0/.markdownlint-cli2.jsonc +23 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.pre-commit-config.yaml +14 -3
- {forge_template-0.3.2 → forge_template-0.4.0}/AGENTS.md +2 -0
- forge_template-0.4.0/CLAUDE.md +526 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/CONTRIBUTING.md +104 -10
- {forge_template-0.3.2 → forge_template-0.4.0}/PKG-INFO +75 -13
- {forge_template-0.3.2 → forge_template-0.4.0}/README.md +74 -12
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/README.md +45 -0
- forge_template-0.4.0/docs/adr/0038-organisation-policy-selection-model.md +65 -0
- forge_template-0.4.0/docs/adr/0039-deny-policy-file-overrides.md +72 -0
- forge_template-0.4.0/docs/adr/0040-organisation-policy-reference-fixture.md +97 -0
- forge_template-0.4.0/docs/adr/0041-forge-blueprint-compatibility-policy.md +114 -0
- forge_template-0.4.0/docs/adr/0042-validate-no-copy-downstream-inheritance.md +71 -0
- forge_template-0.4.0/docs/adr/0043-split-invariants-out-of-claude-md.md +63 -0
- forge_template-0.4.0/docs/adr/0044-plan-data-science-as-the-third-archetype.md +60 -0
- forge_template-0.4.0/docs/adr/0045-data-science-project-shape.md +74 -0
- forge_template-0.4.0/docs/adr/0046-initial-data-science-capabilities.md +70 -0
- forge_template-0.4.0/docs/adr/0047-notebook-data-and-model-safeguards.md +114 -0
- forge_template-0.4.0/docs/adr/0048-data-science-compatibility-and-acceptance.md +104 -0
- forge_template-0.4.0/docs/adr/0049-foundation-capability-tooling-extension-points.md +107 -0
- forge_template-0.4.0/docs/adr/0050-production-jupyter-capability.md +88 -0
- forge_template-0.4.0/docs/adr/0051-production-scientific-python-capability.md +71 -0
- forge_template-0.4.0/docs/adr/0052-validate-production-capability-composition.md +93 -0
- forge_template-0.4.0/docs/adr/0053-production-data-science-archetype.md +94 -0
- forge_template-0.4.0/docs/adr/0054-data-science-notebook-and-artefact-layout.md +104 -0
- forge_template-0.4.0/docs/adr/0055-validate-data-science-generated-projects.md +130 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/README.md +18 -0
- forge_template-0.4.0/docs/capability-composition-validation.md +163 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/cli-application-archetype.md +5 -4
- forge_template-0.4.0/docs/compatibility-policy.md +244 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/component-manifests.md +24 -9
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/composition-architecture-review.md +13 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/composition-fixtures.md +23 -5
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/composition-order.md +6 -0
- forge_template-0.4.0/docs/data-science-archetype.md +187 -0
- forge_template-0.4.0/docs/data-science-capabilities.md +288 -0
- forge_template-0.4.0/docs/data-science-compatibility-and-acceptance.md +307 -0
- forge_template-0.4.0/docs/data-science-validation.md +132 -0
- forge_template-0.4.0/docs/extension-points.md +302 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/file-conflicts.md +10 -6
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/foundation-scope.md +3 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/generated-project-validation.md +8 -1
- forge_template-0.4.0/docs/invariants.md +87 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/library-archetype.md +5 -4
- forge_template-0.4.0/docs/no-copy-inheritance.md +141 -0
- forge_template-0.4.0/docs/notebook-data-and-model-safeguards.md +436 -0
- forge_template-0.4.0/docs/organisation-policy-fixtures.md +149 -0
- forge_template-0.4.0/docs/organisation-policy.md +247 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/project-spec.md +7 -4
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/python-support.md +10 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/ARCHITECTURE.md +25 -5
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/README.md +31 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/REPOSITORY-OWNERSHIP.md +28 -5
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/ROADMAP.md +5 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/github-issues/CROSS-REPO-DEPENDENCIES.md +10 -17
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/github-issues/forge-template/ISSUE-INDEX.md +9 -9
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/00-governance-and-principles/README.md +10 -5
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/02-developer-experience/README.md +2 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/06-extension-and-composition-contract/README.md +15 -15
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/08-reference-archetype-validation/README.md +21 -12
- forge_template-0.4.0/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +70 -0
- forge_template-0.4.0/docs/roadmap-v2/ARCHITECTURE.md +70 -0
- forge_template-0.4.0/docs/roadmap-v2/README.md +36 -0
- forge_template-0.4.0/docs/roadmap-v2/REPOSITORY-OWNERSHIP.md +72 -0
- forge_template-0.4.0/docs/roadmap-v2/ROADMAP.md +44 -0
- forge_template-0.4.0/docs/roadmap-v2/github-issues/CROSS-REPO-DEPENDENCIES.md +40 -0
- forge_template-0.4.0/docs/roadmap-v2/github-issues/GITHUB-SETUP.md +37 -0
- forge_template-0.4.0/docs/roadmap-v2/github-issues/forge-template/ISSUE-INDEX.md +33 -0
- forge_template-0.4.0/docs/roadmap-v2/roadmap/10-data-science-architecture-contract/README.md +65 -0
- forge_template-0.4.0/docs/roadmap-v2/roadmap/11-reusable-data-science-capabilities/README.md +66 -0
- forge_template-0.4.0/docs/roadmap-v2/roadmap/12-data-science-archetype/README.md +55 -0
- forge_template-0.4.0/docs/roadmap-v2/roadmap/13-data-science-cli-integration/README.md +53 -0
- forge_template-0.4.0/docs/roadmap-v2/roadmap/14-data-science-validation-and-rollout/README.md +64 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/secret-handling.md +4 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/template-engine-api.md +56 -10
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/template-variables.md +3 -2
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/terminology.md +41 -15
- {forge_template-0.3.2 → forge_template-0.4.0}/pyproject.toml +12 -3
- {forge_template-0.3.2 → forge_template-0.4.0}/scripts/check_wheel.py +25 -2
- forge_template-0.4.0/src/forge_template/components/data-science/component.toml +47 -0
- forge_template-0.4.0/src/forge_template/components/data-science/content/notebooks/getting-started.ipynb.jinja +84 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/archetype-metadata.toml.jinja +1 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/build-configuration.toml.jinja +3 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/build-system.toml.jinja +2 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/classifiers.toml.jinja +3 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/gitignore-project-shape.jinja +6 -0
- forge_template-0.4.0/src/forge_template/components/data-science/extensions/readme-project-shape.md.jinja +24 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/component.toml +40 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/content/scripts/check_notebooks.py +263 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/extensions/aggregate-check.toml.jinja +1 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/extensions/development-dependencies.toml.jinja +4 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/extensions/gitignore-project-shape.jinja +1 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/extensions/readme-project-shape.md.jinja +19 -0
- forge_template-0.4.0/src/forge_template/components/jupyter/extensions/task-definitions.toml.jinja +2 -0
- forge_template-0.4.0/src/forge_template/components/library/content/src/{{project.package_name}}/__init__.py.jinja +10 -0
- forge_template-0.4.0/src/forge_template/components/library/content/tests/test_smoke.py.jinja +7 -0
- forge_template-0.4.0/src/forge_template/components/scientific-python/component.toml +25 -0
- forge_template-0.4.0/src/forge_template/components/scientific-python/content/tests/test_scientific_python.py +18 -0
- forge_template-0.4.0/src/forge_template/components/scientific-python/extensions/readme-project-shape.md.jinja +8 -0
- forge_template-0.4.0/src/forge_template/components/scientific-python/extensions/runtime-dependencies.toml.jinja +4 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/pyproject.toml.jinja +10 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/foundation.toml +15 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/render.py +1 -1
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/schema.py +2 -2
- forge_template-0.4.0/tests/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/conftest.py +39 -15
- forge_template-0.4.0/tests/fixtures/archetype_regression/digests.json +138 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/conflicts-jupyter/component.toml +17 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/conflicts-jupyter/content/conflicts_jupyter.md +3 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/optioned-tooling/component.toml +25 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/optioned-tooling/content/optioned_tooling.md +3 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/optioned-tooling/extensions/task-definitions.toml.jinja +2 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/optioned-tooling/options.schema.json +7 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/requires-jupyter/component.toml +20 -0
- forge_template-0.4.0/tests/fixtures/capability_composition/requires-jupyter/content/requires_jupyter.md +3 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/alpha-tooling/component.toml +31 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/alpha-tooling/content/alpha-tooling.md +4 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/alpha-tooling/extensions/aggregate-check.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/alpha-tooling/extensions/dependencies.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/alpha-tooling/extensions/tasks.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/beta-tooling/component.toml +31 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/beta-tooling/content/beta-tooling.md +4 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/beta-tooling/extensions/aggregate-check.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/beta-tooling/extensions/dependencies.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/capability_tooling/beta-tooling/extensions/tasks.toml.jinja +1 -0
- forge_template-0.4.0/tests/fixtures/component_manifests/library-v2/content/src/{{project.package_name}}/py.typed +0 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-baseline.json +17 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-delivery-baseline.json +8 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-no-copy-inheritance.json +17 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-production-library.json +11 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-quality-baseline.json +11 -0
- forge_template-0.4.0/tests/fixtures/organisation_policies/example-restricted-delivery.json +8 -0
- forge_template-0.4.0/tests/no_copy_downstream.py +72 -0
- forge_template-0.4.0/tests/organisation_policy_contract.py +653 -0
- forge_template-0.4.0/tests/test_capability_composition.py +483 -0
- forge_template-0.4.0/tests/test_capability_extension_points.py +295 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_cli_archetype.py +8 -2
- forge_template-0.4.0/tests/test_compatibility_policy.py +166 -0
- forge_template-0.4.0/tests/test_data_science_archetype.py +413 -0
- forge_template-0.4.0/tests/test_data_science_build.py +180 -0
- forge_template-0.4.0/tests/test_data_science_composition.py +345 -0
- forge_template-0.4.0/tests/test_data_science_endpoints.py +221 -0
- forge_template-0.4.0/tests/test_data_science_notebook.py +200 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_engine.py +13 -6
- forge_template-0.4.0/tests/test_extension_points.py +243 -0
- forge_template-0.4.0/tests/test_jupyter_capability.py +175 -0
- forge_template-0.4.0/tests/test_jupyter_capability_build.py +84 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_library_archetype.py +8 -2
- forge_template-0.4.0/tests/test_no_copy_inheritance.py +235 -0
- forge_template-0.4.0/tests/test_notebook_validator.py +319 -0
- forge_template-0.4.0/tests/test_organisation_policy_fixture.py +491 -0
- forge_template-0.4.0/tests/test_scientific_python_capability.py +189 -0
- forge_template-0.4.0/tests/test_scientific_python_capability_build.py +98 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/uv.lock +706 -1
- forge_template-0.3.2/CLAUDE.md +0 -379
- forge_template-0.3.2/docs/roadmap-v1/roadmap/09-blueprint-compatibility/README.md +0 -24
- {forge_template-0.3.2 → forge_template-0.4.0}/.gitattributes +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.github/dependabot.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/.gitignore +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/LICENSE +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/SECURITY.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/copier.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0001-record-architecture-decisions.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0002-copier-over-cookiecutter.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0003-two-repo-split.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0004-build-backend-and-versioning.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0005-git-cliff-for-changelogs.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0006-mypy-default-pyright-optional.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0007-mkdocs-pinned-below-2.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0008-remove-make-task-runner.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0009-branch-and-pr-workflow.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0010-forge-architectural-terminology.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0011-forge-foundation-guarantees.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0012-conservative-foundation-scope.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0013-python-support-policy.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0014-editor-neutral-foundation.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0015-owner-local-runtime-configuration.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0016-owner-local-environment-inputs.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0017-owner-local-structured-logging.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0018-owner-local-paths-and-resources.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0019-owner-local-exceptions.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0020-generated-project-secret-safeguards.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0021-defer-sbom-and-release-provenance.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0022-pin-github-actions-by-full-commit-sha.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0023-projectspec-protocol-v1.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0024-component-manifest-protocol-v1.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0025-deterministic-composition-order.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0026-file-conflict-and-override-rules.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0027-template-variable-contract.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0028-composition-contract-fixtures.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0029-stable-template-engine-api.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0030-generated-project-validation.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0031-library-archetype-contract.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0032-render-component-content-paths.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0033-migrate-library-production-catalogue.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0034-select-cli-application-reference-archetype.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0035-implement-cli-application-archetype.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0036-publish-the-engine-to-pypi.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/adr/0037-two-archetype-composition-review.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/configuration-ownership.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/editor-integration.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/environment-variables.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/exception-ownership.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/foundation-guarantees.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/github-action-pinning.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/paths-and-resources.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/github-issues/GITHUB-SETUP.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/01-python-core/README.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/03-quality-and-ci/README.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/04-runtime-and-configuration/README.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/05-security-and-supply-chain/README.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/roadmap-v1/roadmap/07-forge-cli-integration/README.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/structured-logging.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/docs/supply-chain-provenance.md +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/scripts/labels.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/scripts/verify-ci.sh +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/adr.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/component_manifest.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/src/{{project.package_name}}/__init__.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/src/{{project.package_name}}/__main__.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/src/{{project.package_name}}/cli.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/src/{{project.package_name}}/py.typed +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/tests/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/content/tests/test_cli.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/archetype-metadata.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/build-configuration.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/build-system.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/classifiers.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/entry-points.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/readme-project-shape.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/cli/extensions/runtime-dependencies.toml.jinja +0 -0
- {forge_template-0.3.2/src/forge_template/components/library → forge_template-0.4.0/src/forge_template/components/data-science}/content/src/{{project.package_name}}/__init__.py.jinja +0 -0
- {forge_template-0.3.2/src/forge_template/components/library → forge_template-0.4.0/src/forge_template/components/data-science}/content/src/{{project.package_name}}/py.typed +0 -0
- {forge_template-0.3.2/src/forge_template/components/library → forge_template-0.4.0/src/forge_template/components/data-science}/content/tests/__init__.py +0 -0
- {forge_template-0.3.2/src/forge_template/components/library → forge_template-0.4.0/src/forge_template/components/data-science}/content/tests/test_smoke.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/component.toml +0 -0
- {forge_template-0.3.2/src/forge_template → forge_template-0.4.0/src/forge_template/components/library/content/src/{{project.package_name}}}/py.typed +0 -0
- {forge_template-0.3.2/template → forge_template-0.4.0/src/forge_template/components/library/content}/tests/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/archetype-metadata.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/build-configuration.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/build-system.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/classifiers.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/gitignore-project-shape.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/extensions/readme-project-shape.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/components/library/options.schema.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/composition.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/engine.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/file_conflicts.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/.editorconfig +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/.gitattributes +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/.gitignore.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/.python-version.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/CONTRIBUTING.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/LICENSE.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/README.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation/content/SECURITY.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/foundation_source.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/github_actions.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/project_spec.py +0 -0
- {forge_template-0.3.2/template/src/{{package_name}} → forge_template-0.4.0/src/forge_template}/py.typed +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/src/forge_template/template_variables.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.copier-answers.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.editorconfig +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.env.example.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.gitattributes +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/CODEOWNERS.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/ISSUE_TEMPLATE/bug_report.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/ISSUE_TEMPLATE/feature_request.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/pull_request_template.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/workflows/ci.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.github/{% if dependency_updates == 'dependabot' %}dependabot.yml{% endif %}.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.gitignore.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.pre-commit-config.yaml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/.python-version.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/CHANGELOG.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/CONTRIBUTING.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/LICENSE.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/README.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/SECURITY.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/pyproject.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/src/{{package_name}}/__init__.py.jinja +0 -0
- {forge_template-0.3.2/tests/fixtures/component_manifests/library-v2/content/src/{{project.package_name}} → forge_template-0.4.0/template/src/{{package_name}}}/py.typed +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0/template}/tests/__init__.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/tests/test_smoke.py.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if dependency_updates == 'renovate' %}renovate.json{% endif %}.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if use_docs %}docs{% endif %}/adr/0001-record-architecture-decisions.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if use_docs %}docs{% endif %}/adr/README.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if use_docs %}docs{% endif %}/index.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if use_docs %}docs{% endif %}/reference.md.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/template/{% if use_docs %}mkdocs.yml{% endif %}.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/composition_contract.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/changelog/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/changelog/content/a-top.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/changelog/content/nested/a-deep.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/changelog/content/z-top.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/coverage/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/coverage/content/.coveragerc +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/coverage/extensions/ci-step.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/documentation/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/documentation/content/mkdocs.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/github/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/github/content/ci.yml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/github/options.schema.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library/content/pyproject.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library/options.schema.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library-v2/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library-v2/extensions/pyproject-build-system.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/component_manifests/library-v2/options.schema.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/foundation/content/pyproject.toml.jinja +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/foundation/foundation.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/golden/extension.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/golden/full.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/golden/minimal.json +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/colliding-first/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/colliding-first/content/shared.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/colliding-second/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/colliding-second/content/shared.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/conflicting-first/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/conflicting-first/content/placeholder.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/conflicting-second/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/conflicting-second/content/placeholder.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/cycle-a/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/cycle-a/content/placeholder.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/cycle-b/component.toml +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/fixtures/invalid_components/cycle-b/content/placeholder.txt +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_adr.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_cli_build.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_combos.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_component_manifest.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_composition.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_composition_architecture_review.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_composition_contract.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_file_conflicts.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_foundation_source.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_generated_project_validation.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_github_actions.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_library_build.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_project_spec.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_render.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_schema.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_template_variables.py +0 -0
- {forge_template-0.3.2 → forge_template-0.4.0}/tests/test_update.py +0 -0
|
@@ -76,7 +76,7 @@ in-progress = { color = "8c959f", description = "Actively being worked on" }
|
|
|
76
76
|
deferred = { color = "afb8c1", description = "Confirmed out of scope for now, not forgotten" }
|
|
77
77
|
|
|
78
78
|
[groups.roadmap]
|
|
79
|
-
description = "Which Forge
|
|
79
|
+
description = "Which Forge roadmap stage owns the work."
|
|
80
80
|
family = "orange"
|
|
81
81
|
|
|
82
82
|
[groups.roadmap.labels]
|
|
@@ -90,6 +90,11 @@ family = "orange"
|
|
|
90
90
|
"07" = { color = "d45d1a", description = "Forge roadmap Stage 07 — Forge CLI Integration" }
|
|
91
91
|
"08" = { color = "bd4914", description = "Forge roadmap Stage 08 — Reference Archetype Validation" }
|
|
92
92
|
"09" = { color = "9f3610", description = "Forge roadmap Stage 09 — Blueprint Compatibility" }
|
|
93
|
+
"10" = { color = "ffe2b7", description = "Forge roadmap Stage 10 — Data Science Architecture Contract" }
|
|
94
|
+
"11" = { color = "ffc680", description = "Forge roadmap Stage 11 — Reusable Data Science Capabilities" }
|
|
95
|
+
"12" = { color = "ffa657", description = "Forge roadmap Stage 12 — Data Science Archetype" }
|
|
96
|
+
"13" = { color = "e67700", description = "Forge roadmap Stage 13 — Data Science CLI Integration" }
|
|
97
|
+
"14" = { color = "b95000", description = "Forge roadmap Stage 14 — Data Science Validation and Rollout" }
|
|
93
98
|
|
|
94
99
|
# Repository-wide metadata that is clearer without a namespace. GitHub
|
|
95
100
|
# special-cases `good first issue` and `help wanted` in its discovery UI.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
released projects
|
|
11
11
|
- [ ] An ADR is added under `docs/adr/`, if this makes a real architectural call
|
|
12
12
|
- [ ] A `_migrations` block is added, if any `template/` path was renamed or
|
|
13
|
-
deleted (see
|
|
13
|
+
deleted (see docs/invariants.md's invariant 3)
|
|
14
14
|
- [ ] Any conditional file I touched still ends in a real trailing newline
|
|
15
|
-
(invariant 1)
|
|
15
|
+
(docs/invariants.md's invariant 1)
|
|
16
16
|
- [ ] Commit messages follow [Conventional Commits](https://www.conventionalcommits.org/)
|
|
@@ -8,7 +8,7 @@ on:
|
|
|
8
8
|
workflow_dispatch:
|
|
9
9
|
inputs:
|
|
10
10
|
dry_run:
|
|
11
|
-
description: Print the tag without creating
|
|
11
|
+
description: Print the tag and notes without creating anything
|
|
12
12
|
type: boolean
|
|
13
13
|
default: false
|
|
14
14
|
|
|
@@ -22,6 +22,12 @@ jobs:
|
|
|
22
22
|
release:
|
|
23
23
|
runs-on: ubuntu-latest
|
|
24
24
|
steps:
|
|
25
|
+
- name: Refuse to release from anything but main
|
|
26
|
+
if: github.ref != 'refs/heads/main'
|
|
27
|
+
run: |
|
|
28
|
+
echo "::error::Releases must be dispatched from main, not ${{ github.ref }}."
|
|
29
|
+
exit 1
|
|
30
|
+
|
|
25
31
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
26
32
|
with:
|
|
27
33
|
fetch-depth: 0
|
|
@@ -55,15 +61,21 @@ jobs:
|
|
|
55
61
|
id: notes
|
|
56
62
|
run: |
|
|
57
63
|
latest="${{ steps.version.outputs.latest }}"
|
|
64
|
+
if [ "$latest" = "none" ]; then
|
|
65
|
+
echo "Initial release." > release-notes.md
|
|
66
|
+
else
|
|
67
|
+
git log "${latest}..HEAD" --pretty='- %s' --no-merges > release-notes.md
|
|
68
|
+
fi
|
|
58
69
|
{
|
|
59
70
|
echo "notes<<EOF"
|
|
60
|
-
|
|
61
|
-
echo "Initial release."
|
|
62
|
-
else
|
|
63
|
-
git log "${latest}..HEAD" --pretty='- %s' --no-merges
|
|
64
|
-
fi
|
|
71
|
+
cat release-notes.md
|
|
65
72
|
echo "EOF"
|
|
66
73
|
} >> "$GITHUB_OUTPUT"
|
|
74
|
+
{
|
|
75
|
+
echo "## Release notes"
|
|
76
|
+
echo
|
|
77
|
+
cat release-notes.md
|
|
78
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
67
79
|
|
|
68
80
|
- name: Warn on breaking template changes
|
|
69
81
|
run: |
|
|
@@ -40,7 +40,8 @@ jobs:
|
|
|
40
40
|
run: uv sync --all-groups
|
|
41
41
|
|
|
42
42
|
# Same gate as `uv run pre-commit run --all-files` locally: ruff,
|
|
43
|
-
# shellcheck, and the whitespace/EOF hooks that guard
|
|
43
|
+
# shellcheck, markdownlint, and the whitespace/EOF hooks that guard
|
|
44
|
+
# invariant 1.
|
|
44
45
|
- name: Pre-commit
|
|
45
46
|
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
46
47
|
|
|
@@ -119,8 +120,8 @@ jobs:
|
|
|
119
120
|
run: uv run pytest -m combos -k c1-uvbuild-static --from-git -v
|
|
120
121
|
|
|
121
122
|
# ---------------------------------------------------------------------------
|
|
122
|
-
# Real
|
|
123
|
-
#
|
|
123
|
+
# Real generated-project proof for production Library/CLI archetypes and
|
|
124
|
+
# capability compositions -- tests/*_build.py.
|
|
124
125
|
# ---------------------------------------------------------------------------
|
|
125
126
|
archetype:
|
|
126
127
|
name: Archetype builds
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"config": {
|
|
3
|
+
"MD013": {
|
|
4
|
+
"line_length": 80,
|
|
5
|
+
// A table row cannot be broken across lines; a heading cannot wrap;
|
|
6
|
+
// and CLAUDE.md's validation ladder relies on column alignment.
|
|
7
|
+
"tables": false,
|
|
8
|
+
"headings": false,
|
|
9
|
+
"code_blocks": false
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"overrides": [
|
|
13
|
+
{
|
|
14
|
+
// CONTRIBUTING.md: ADR records are immutable. 0039's H1 title is 103
|
|
15
|
+
// chars and 0007:29 is a 93-char inline code span holding a Jinja
|
|
16
|
+
// conditional filename -- neither can wrap. Structural rules still
|
|
17
|
+
// apply, so new records are still checked for shape.
|
|
18
|
+
"filter": ["docs/adr/**"],
|
|
19
|
+
"config": { "MD013": false },
|
|
20
|
+
"combine": "merge"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# This repo's own lint gate -- also what CI runs (see the `lint` job in
|
|
2
2
|
# .github/workflows/test-template.yml). Deliberately covers template/**: the
|
|
3
|
-
# whitespace/EOF hooks are how invariant 1 in
|
|
4
|
-
# must be pre-commit clean) gets enforced at the source, not just
|
|
5
|
-
# downstream when a scaffold's own pre-commit run fails.
|
|
3
|
+
# whitespace/EOF hooks are how invariant 1 in docs/invariants.md (generated
|
|
4
|
+
# output must be pre-commit clean) gets enforced at the source, not just
|
|
5
|
+
# discovered downstream when a scaffold's own pre-commit run fails.
|
|
6
6
|
default_install_hook_types: [pre-commit, commit-msg]
|
|
7
7
|
|
|
8
8
|
repos:
|
|
@@ -27,6 +27,17 @@ repos:
|
|
|
27
27
|
- id: shellcheck
|
|
28
28
|
files: ^scripts/.*\.sh$
|
|
29
29
|
|
|
30
|
+
# Not markdownlint-cli2-docker, for the same reason shellcheck-py is used
|
|
31
|
+
# above. Scope is root *.md and docs/** -- template/'s Markdown is all
|
|
32
|
+
# .md.jinja and must never be linted or auto-fixed: it is raw Jinja, and
|
|
33
|
+
# rewriting it would risk invariant 1 (docs/invariants.md).
|
|
34
|
+
- repo: https://github.com/DavidAnson/markdownlint-cli2
|
|
35
|
+
rev: v0.23.2
|
|
36
|
+
hooks:
|
|
37
|
+
- id: markdownlint-cli2
|
|
38
|
+
args: [--fix]
|
|
39
|
+
exclude: ^(template|\.github)/
|
|
40
|
+
|
|
30
41
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
31
42
|
rev: v0.14.0
|
|
32
43
|
hooks:
|