sheetport-spec

Crates.iosheetport-spec
lib.rssheetport-spec
version0.3.0
created_at2025-12-14 06:19:17.6839+00
updated_at2025-12-14 06:19:17.6839+00
descriptionSheetPort spec schema + validation tooling
homepagehttps://github.com/psu3d0/formualizer
repositoryhttps://github.com/psu3d0/formualizer
max_upload_size
id1983894
size125,821
Frankie Colson (PSU3D0)

documentation

README

sheetport-spec (FIO / SheetPort)

sheetport-spec defines the Formualizer I/O (FIO) manifest format used by SheetPort.

  • Canonical JSON Schema: schema/fio-0.3.json (Draft 2019-09)
  • Current spec version: 0.3.0 (spec_version)
  • Conformance profiles: core-v0 (default), full-v0 (reserved)

What Is FIO?

A FIO manifest binds typed input/output ports to workbook regions so a spreadsheet can be treated like a deterministic function:

  • Inputs are written into declared locations
  • The workbook is recalculated
  • Outputs are read from declared locations

The manifest is a contract: it describes what data is expected, where it lives in the workbook, and how it is shaped.

Profiles (Capability Gating)

Manifests may include:

capabilities:
  profile: core-v0

core-v0 limits selector usage to features expected to be broadly supported.

  • core-v0 supports: a1, name, layout
  • full-v0 is reserved for: struct_ref, workbook table selectors

Validation

Rust:

use sheetport_spec::Manifest;

let yaml = std::fs::read_to_string("manifest.fio.yaml")?;
let manifest: Manifest = Manifest::from_yaml_str(&yaml)?;
manifest.validate()?;

CLI (from workspace root):

cargo run -p sheetport-spec --bin fio-lint -- tests/fixtures/supply_planning.yaml
cargo run -p sheetport-spec --bin fio-lint -- tests/fixtures/supply_planning.yaml --normalize

--normalize emits a canonicalized YAML form (sorted/deduped where applicable).

Versioning

  • spec_version in the manifest is the authoritative spec version.
  • The crate version is expected to track the supported spec version.
Commit count: 132

cargo fmt