Project Scope

Buffalo Core is the shared foundation layer for Buffalo projects. It exists to hold small, domain-light building blocks that multiple downstream Buffalo projects should be able to depend on without depending on one another.

What Belongs In Buffalo Core

Code belongs in Buffalo Core when it satisfies most or all of the following:

  • It is useful across at least two Buffalo projects, or it is clearly foundational for planned shared infrastructure.

  • It is domain-light and does not encode airfoil-specific, panel-method-specific, or other high-level analysis behavior.

  • It improves consistency across projects by giving them a common vocabulary, normalization rule, or reporting model.

  • It is small enough that its behavior can be documented and tested completely within Buffalo Core.

Examples that fit this scope include:

  • shared NumPy-oriented type aliases

  • low-level numeric normalization helpers

  • structured diagnostics and result wrappers

  • shared schema metadata primitives for GUI and editor introspection

What Does Not Belong In Buffalo Core

The following should usually stay in downstream projects such as Buffalo Wings or Buffalo Panel:

  • geometry models and geometry algorithms

  • aerodynamic formulations, kernels, or solver logic

  • project-specific runtime models or schema families

  • helpers that are only convenient for one project

  • large utility collections that do not form a coherent shared abstraction

Buffalo Core should not become a general-purpose utilities package. If a feature does not clearly improve shared foundations, it should stay downstream until that need becomes real.

Bar For New Additions

Before adding a new public module or abstraction, confirm all of the following:

  1. The capability is either already needed by more than one Buffalo project or is part of the agreed shared foundation plan.

  2. The abstraction can be described without leaning on one project’s domain language.

  3. The public contract is small enough to commit to compatibility expectations and release-note coverage.

  4. The addition does not make Buffalo Core the owner of a higher-level workflow that belongs in a downstream package.

When there is uncertainty, prefer keeping code in the downstream project first. Move it into Buffalo Core only after the shared abstraction is clear.