Output-Ref Strategy Comparison
FABLE Pyculator can compare several output-ref strategies before a generated-model rebuild. This is a planning step: it helps users understand the size and validation boundary of each strategy without running FreshForge or claiming generated-model equivalence.
Why Compare Strategies?
The output-ref list tells Modelwright which workbook cells define the generated-model boundary. A small list is easier to debug, while a broad list gives more validation coverage. FABLE Pyculator can derive those lists from workbook metadata instead of asking users to copy cell references manually.
The default comparison includes:
output-columnsAll discovered output-table cells tagged
OUTPUT-*.headline-onlyCurated headline series refs.
ghg-output-columnsThe
ghg_resultsghgtable restricted toOUTPUT-*columns.ghg-output-8The
ghg_resultsghgtable restricted toOUTPUT-8columns.all-columnsEvery discovered output-table cell, including context and support columns.
Run A Comparison
From the repository root:
.venv/bin/python scripts/compare_fable_output_ref_strategies.py --json
By default this reads:
tmp/private-workbooks/2021_Open_FABLECalculator.xlsx
and writes:
tmp/strategy-comparisons/fable-2021/summary.json
tmp/strategy-comparisons/fable-2021/summary.md
tmp/strategy-comparisons/fable-2021/<strategy>/output_refs.json
Restrict the comparison to selected default cases:
.venv/bin/python scripts/compare_fable_output_ref_strategies.py \
--strategy output-columns \
--strategy headline-only \
--json
Add --include-workflows when you also want per-strategy FreshForge workflow JSON files. The
workflow files are still plan artifacts; FreshForge execution remains explicit and separate.
FreshForge Matrix
Phase 22 can also write a FreshForge matrix document for the compared strategies:
.venv/bin/python scripts/compare_fable_output_ref_strategies.py \
--include-matrix \
--json
This implies per-strategy workflow files and writes:
tmp/strategy-comparisons/fable-2021/strategy-matrix.yaml
tmp/strategy-comparisons/fable-2021/strategy-matrix-workflow-template.yaml
Plan the matrix without running Modelwright:
.venv/bin/python scripts/compare_fable_output_ref_strategies.py \
--matrix-plan \
--json
Run the matrix only after reviewing the strategy boundaries and restoring the required local workbook artifacts:
.venv/bin/python scripts/compare_fable_output_ref_strategies.py \
--matrix-run \
--workdir . \
--fail-fast \
--json
FreshForge remains optional. Matrix document creation does not require FreshForge, but planning and running require a FreshForge version with matrix support.
After an explicit matrix run, package compact generated-model evidence with
scripts/package_fable_matrix_evidence.py. The full 2021 sequence is documented in
FABLE 2021 Benchmark Matrix Evidence Cookbook.
FreshForge Namespaces
Each comparison entry records an intended FreshForge run namespace such as:
strategy/output-columns
strategy/headline-only
FreshForge namespaces let later repeated runs avoid overwriting artifacts from other strategies. The Phase 22 matrix uses those namespaces for the explicit strategy cases.
Evidence Summaries
If local per-strategy run artifacts already exist, pass --include-existing-evidence. FABLE
Pyculator will summarize whatever compact evidence can be found. When the local Modelwright version
exposes generic validation-evidence helpers, those are used; otherwise the FABLE-local evidence
packaging helper is used as a fallback.
Claim Boundary
Strategy comparison is not generated-model equivalence validation. It reports output-ref counts, cached comparable-output counts, artifact paths, and optional existing evidence summaries. Treat a strategy as validated only after a matching generated model has been run and explicit comparable-output, match, and mismatch counts support that claim.