ozzit.xlsx is the shipped authority. src/*.txt, the AFE store and
functions.csv are bound publication views and must agree with the same
workbook commit. Do not hand-edit or submit one view alone; follow the
source-owning process in tools/postbuild/README.md for a formula change: sync
the AFE store after any src/ change, and sanitise the workbook last.
Cached formula results may change only with Excel-backed recalculation evidence.
Do not claim a cache refresh from XML tooling: it has no formula engine. Before
the native Excel gates, ensure no user Excel process is running and do not close
or attach to one. Follow the evidence, hash and Excel-version requirements in
RELEASING.md.
Run the CI sequence exactly before submitting a change. The first 4 commands
are the lint job; the rest run on Python 3.14. Install the git
hooks once with python -m pip install pre-commit && pre-commit install; they
run the pinned ruff check on staged files.
python -m pip install "ruff==0.16.6"
python -m ruff check .
python -m pip install "mypy==2.3.1"
python -m mypy --config-file mypy.ini
python tools/verify_workbook.py ozzit.xlsx
python tools/verify_sources.py ozzit.xlsx src
python tools/verify_signatures.py src
python tools/verify_previous_names.py functions.csv
python tools/verify_index.py ozzit.xlsx src functions.csv
python tools/verify_cover.py ozzit.xlsx functions.csv CHANGELOG.md
python tools/verify_afe.py ozzit.xlsx src
python tools/verify_help_spills.py ozzit.xlsx
python tools/verify_native_evidence.py
python -m unittest discover -s tools/tests -vFor a workbook change, also run the native Excel self-test and cached-value
gate named in RELEASING.md. Release preparation, tagging and publication are
governed solely by that document and require the stated human approval.
For a change to templates/13-week-cash-flow-forecast.xlsx, also run its separate
native gate after confirming no Excel process is running:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\tools\excel_cash_flow_selftest.ps1