FreshForge Provider Integration
FABLE Pyculator exposes a FreshForge provider for FABLE notebook workflow stages. The original Phase 9 node types remain plan-only: they help FreshForge validate and plan FABLE-specific steps such as notebook-spec discovery, output-ref derivation, validation-scenario preparation, downstream Modelwright workflow construction, and notebook-loop planning. Phase 19 adds executable scenario-bundle nodes for repeated selection-control runs against an existing generated model.
FABLE Pyculator owns FABLE workbook-surface and scenario-bundle semantics; Modelwright owns generated-model inference, generation, execution, and validation; and FreshForge owns workflow validation, planning, namespaces, and provider orchestration.
Installation Boundary
FABLE Pyculator registers a freshforge.providers entry point. The core
package stays FreshForge-free during normal imports, but the freshforge
extra installs the PyPI alpha needed for provider discovery, planning, and
execution:
python -m pip install "fable-pyculator[freshforge]"
FreshForge can only discover the provider entry point after the current FABLE Pyculator checkout has been installed into the active environment. From the repository root, refresh the local editable install after pulling provider changes:
scripts/bootstrap_dev_env.sh
or, when the virtual environment already exists:
source .venv/bin/activate
python -m pip install -e ".[dev,notebook,docs]"
The development extra includes FreshForge so provider and matrix tests exercise the published FreshForge alpha line.
Confirm that FreshForge can see the FABLE Pyculator provider before validating the example:
freshforge providers
The provider list should include fable_pyculator. If validation reports
Provider 'fable_pyculator' is not registered, reinstall FABLE Pyculator in the active
environment with python -m pip install -e ".[dev,notebook,docs]".
Normal imports remain FreshForge-free:
import fable_pyculator
Provider Nodes
The provider id is fable_pyculator. Phase 9 exposes these plan-only node types:
notebook_spec_discoverDeclares FABLE workbook-surface discovery into a notebook-facing spec.
output_refs_deriveDeclares output-ref derivation from FABLE output-table flavour metadata such as
OUTPUT-*.validation_scenario_prepareDeclares cached-workbook validation-scenario preparation for selected output refs.
modelwright_workflow_buildDeclares construction of the downstream Modelwright FreshForge workflow document.
notebook_loop_planDeclares a notebook loop around a matching workbook spec and generated model.
Phase 19 adds executable scenario-bundle node types:
scenario_bundle_prepareValidates a bundle against a workbook-derived spec and writes normalized bundle metadata.
scenario_runRuns one bundle scenario against an existing matching generated model and writes rendered scenario artifacts.
scenario_bundle_manifestAssembles a namespaced bundle manifest from completed scenario run nodes.
The node vocabulary maps to the public workflow helper APIs documented in
fable_pyculator.workflows, including derive_output_refs,
derive_output_refs_for_strategy, fable_freshforge_build_paths,
build_cached_workbook_validation_scenario, prepare_freshforge_rebuild, and
build_modelwright_freshforge_workflow. The 2021-specific helper names remain available as
compatibility shortcuts for existing notebooks and scripts.
For real workbook-derived output-ref strategy comparisons, see Output-Ref Strategy Comparison. That guide records per-strategy FreshForge namespaces and optional workflow documents without turning the FABLE provider into an execution adapter.
For executable scenario-bundle workflows, see FreshForge Scenario-Bundle Orchestration.
Example
The public-safe notebook workflow example uses ignored tmp/ paths and can be validated or
planned when FreshForge is installed:
freshforge validate examples/freshforge/fable_2021_notebook_workflow.yaml
freshforge inspect examples/freshforge/fable_2021_notebook_workflow.yaml
freshforge plan examples/freshforge/fable_2021_notebook_workflow.yaml
Planning this graph does not derive real output refs, inspect source workbooks, execute Modelwright, or materialize generated artifacts. It proves only that the FABLE-specific planning boundary is structured and discoverable.
The scenario-bundle workflow example can also be validated and planned:
freshforge validate examples/freshforge/fable_2021_scenario_bundle_workflow.yaml
freshforge plan examples/freshforge/fable_2021_scenario_bundle_workflow.yaml
Boundary
The FABLE Pyculator provider may describe FABLE-specific workflow planning metadata. It must not:
generate or validate Modelwright Python models;
choose generic workbook conversion semantics;
claim additional country-calculator compatibility from planning metadata alone.