Skip to main content

Workflow-as-code for open forest resources and ecosystem services modelling.

Project description

FreshForge

freshforge is an early public-alpha Python package for workflow-as-code in open forest resources and ecosystem services modelling.

FreshForge is intended to provide a small, neutral workflow layer for composing open FRESH ecosystem tools as typed, version-controlled, executable graphs. The long-term goal is to make forest modelling workflows easier to review, test, rerun, publish, and adapt across projects that use tools such as FEMIC, FHOPS, ws3, Modelwright, Nemora, and future FRESH packages.

FreshForge is pre-release alpha software. It implements provisional workflow records, YAML/JSON loading, structural and provider-aware validation, explicit provider registry support, Python entry-point provider discovery, workflow inspection, non-executing run planning, and a serial local runner for provider-owned node execution with run namespaces and compact summaries, and generic run matrices for repeated workflow-template expansion. The 0.1.0a5 release is the first PyPI alpha release and is also available as a GitHub prerelease with checked artifacts. FreshForge does not yet implement a stable workflow DSL, caching, checkpointing, parallel execution, remote execution, or real domain adapters.

Documentation: https://ubc-fresh.github.io/freshforge/

Repository: https://github.com/UBC-FRESH/freshforge

Statement Of Need

Forest modelling workflows often live across scripts, spreadsheets, GIS model builders, notebooks, command-line calls, consultant documentation, and tacit project knowledge. That makes them hard to audit, rerun, compare, teach, or port between computing environments.

FreshForge starts from a different premise: the durable source of truth should be a declarative workflow graph and its provenance, not a GUI canvas or a one-off script chain. GIS, optimization, spreadsheet conversion, simulation, reporting, and publication steps should be composable as explicit nodes with typed inputs, outputs, diagnostics, and verification records.

Current Alpha Scope

Supported in 0.1.0a5:

  • Python package skeleton using src/ layout;
  • minimal freshforge command-line interface;
  • strict roadmap, issue, changelog, and planning workflow;
  • Phase 1 architecture contracts for workflow vocabulary, provider boundaries, and CLI/API direction;
  • provisional Phase 2 YAML/JSON workflow loading, validation diagnostics, and non-executing run planning;
  • Phase 3 explicit provider registry support, built-in example provider metadata, provider-aware diagnostics, and workflow inspection;
  • Phase 4 Python entry-point provider discovery and a public-safe fixture adapter that proves the adapter packaging path;
  • Phase 6 serial local workflow execution for providers that implement run_node(...), including run records and work-directory-aware artifact path resolution;
  • Phase 7 run namespaces and compact workflow-run summaries for repeated local runs;
  • Phase 8 generic run matrices for repeated workflow-template expansion;
  • public-safe example workflow specs;
  • Sphinx documentation;
  • CI, documentation, and release-artifact workflows.

Not supported yet:

  • stable workflow YAML/TOML/JSON schema;
  • real FEMIC/FHOPS/ws3/Modelwright/Nemora provider adapters;
  • caching, checkpointing, parallel execution, or remote execution;
  • direct integration with FEMIC, FHOPS, ws3, Modelwright, Nemora, or GIS tools;
  • stable public APIs or production workflow orchestration.

FreshForge is available from PyPI as an alpha package:

python -m pip install freshforge==0.1.0a5

Install For Development

python -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .[dev]

On Windows PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .[dev]

Run the local checks:

python -m ruff check .
python -m pytest
sphinx-build -b html docs _build/html -W
python -m build
twine check dist/*

Command Line

freshforge --version
freshforge info
freshforge providers
freshforge inspect examples/stand_treatment_workflow.yaml
freshforge inspect examples/ecosystem_adapter_workflow.yaml
freshforge validate examples/stand_treatment_workflow.yaml
freshforge validate examples/ecosystem_adapter_workflow.yaml
freshforge plan examples/stand_treatment_workflow.yaml
freshforge plan examples/ecosystem_adapter_workflow.yaml
freshforge run examples/stand_treatment_workflow.yaml --json
freshforge matrix expand examples/run_matrix.yaml --json
freshforge matrix plan examples/run_matrix.yaml --json

The CLI commands are thin wrappers over package APIs. They validate, inspect, plan, and run executable provider nodes. Built-in example providers are plan-only, so freshforge run reports an unsupported-execution diagnostic for those examples.

Roadmap

Near-term phases are tracked in ROADMAP.md:

  • Phase 0: bootstrap package, governance, docs, and automation scaffold.
  • Phase 1: architecture and workflow-language research.
  • Phase 2: core workflow records and validation contracts.
  • Phase 3: node provider API and execution-planning prototype.
  • Phase 4: ecosystem adapter prototypes.
  • Phase 5: documentation, examples, and public alpha hardening.
  • Phase 6: serial local workflow run runtime.

Development follows the FRESH phase/task/subtask workflow:

  • ROADMAP.md maps phases and tasks to GitHub issues.
  • CHANGE_LOG.md records the dated project narrative.
  • planning/ stores focused design notes and decisions.
  • One active phase generally maps to one parent issue and feature branch.
  • Roadmap tasks map to child issues linked from the parent issue body.

Public-Repo Hygiene

Do not commit private project data, raw chat transcripts, unpublished source documents, generated local outputs, or machine-specific paths. Keep scratch material under ignored local paths such as tmp/, local/, data/private/, or outputs/.

Use GitHub issues for public bug reports, documentation issues, and feature requests. Do not attach private project material to public issues.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

freshforge-0.1.0a5.tar.gz (40.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

freshforge-0.1.0a5-py3-none-any.whl (26.6 kB view details)

Uploaded Python 3

File details

Details for the file freshforge-0.1.0a5.tar.gz.

File metadata

  • Download URL: freshforge-0.1.0a5.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for freshforge-0.1.0a5.tar.gz
Algorithm Hash digest
SHA256 1f104916213c1877e123737ad1cbf34d399967ea24aa59f6c9f04834801f1d00
MD5 aa59ae81b0d6e586c6dbb9dc76ebc914
BLAKE2b-256 156eabe6010d6cf6a562b8b5c27502750a1458c56fa31e721cae16e78c19dd5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for freshforge-0.1.0a5.tar.gz:

Publisher: release.yml on UBC-FRESH/freshforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file freshforge-0.1.0a5-py3-none-any.whl.

File metadata

  • Download URL: freshforge-0.1.0a5-py3-none-any.whl
  • Upload date:
  • Size: 26.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for freshforge-0.1.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 aa9829f97db03864464a653ab7905d3d62b9d4d45d0e19b6794c539191eda74c
MD5 bc84c18ec5db9ec68ad88b167f401088
BLAKE2b-256 dc0ca85f903ea4d06bf7c8ece6737f61abe4f967a40cb281a8f75c1aa27e8539

See more details on using hashes here.

Provenance

The following attestation bundles were made for freshforge-0.1.0a5-py3-none-any.whl:

Publisher: release.yml on UBC-FRESH/freshforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page