A project holds models, tables, and scalar parameters, and it is what a run is handed.
A project is three lists: models, tables, and scalar parameters. It is the unit Calcbird checks and runs. Everything a formula can name lives in the project that holds it.
Tables and parameters belong to the project, not to a model. Two models in one project read the same invoices table and the same @Discount parameter, and each decides for itself which of the table's columns it uses.
A model reads the project's tables and its scalar parameters, and nothing that belongs to another model. One model's driver cannot appear in another model's formula.
Two models that need the same number share it through the project. Put the number in a table or a parameter, and have both models read it. Each model stays a page of formulas you can read without opening another one.
The catalog is the shape of a project with none of its data in it: each table with its columns and their types, and each scalar parameter's declaration. Calcbird checks a model against the catalog before it reads a row, so a formula that names a missing column is reported before anything runs.
project table invoices date, plan, region, amount table scenario name, growth scalar parameter @Discount = 0.20