Skip to content

v1.0.1

Latest

Choose a tag to compare

@AdrianCurtin AdrianCurtin released this 16 Jul 19:42
68576ce

v1.0.1 — Reproducibility, CI, and API curation

A maintenance and infrastructure release: gated continuous-integration test
lanes, deterministic identity/fingerprinting primitives, MCP integration docs,
a curated public API surface, and targeted fixes. It builds on the v1.0.0
two-layer toolbox without changing its workflows.

Testing & continuous integration

  • Authoritative test-suite builder (buildSuite) and a runCI gate that runs
    the headless, UI, clean-process, and quick lanes and fails on Failed or
    Incomplete tests.
  • runQuickTests now returns a pass flag and errors on failure when no output
    is captured, so it can act as a gate.
  • Manual GitHub Actions workflow (workflow_dispatch) running the quick and
    identity lanes, including cross-platform matrix jobs.
  • Golden-file regression fixtures and notes under tests/golden/.

Identity & reproducibility primitives (+pf2_base/+identity/)

  • Deterministic canonical byte encoding, domain-separated (named) hashing, and
    SHA-256 digests.
  • A tagged JSON/MAT transport for round-tripping values canonically.
  • Source and imported-data fingerprinting, plus a fail-closed expected-digest
    preflight that gates importers.

Processing methods

  • Shipped Takizawa oxy seed methods (takizawa_easy / takizawa_hard, lenient
    and strict automatic channel rejection — Takizawa et al. 2008) added to the
    default library.
  • Method reference tables and examples updated to the live registry and to the
    OD_TDDR raw method.

Public API & namespace curation

  • The Context processing option now uses the public pf2.ProcessingContext;
    the public fromRecipe helper was removed.
  • Method-authoring internals moved out of the primary pf2.* surface into
    pf2_base: seed factories and discovery to pf2_base.methods.seeds,
    function-metadata validation to pf2_base.methods.validateFunction, the
    add/edit-function tools to pf2_base.methods.functions, and the tutorial
    demo-pipeline setup to pf2_base.examples.addDemoPipelines.
  • Retired the pf2.GUI.configureRawMethods / configureOxyMethods /
    functions wrappers; the supported method editors are
    pf2.methods.raw.configureMethods and pf2.methods.oxy.configureMethods.

MCP integration

  • mcp/README.md and mcp/TOOL_CARD.md: how to drive processFNIRS2 from an MCP
    client through the MATLAB MCP Server.

Documentation

  • pf2_sSMART header references added (Curtin & Ayaz 2019; Ayaz et al. 2010 for
    the SMAR detection stage) and an expanded Notes section on the DC-offset
    (ShiftCorrect) correction and its caveats; pf2_functions_default.cfg
    argument list, role, defaults, and parameter metadata corrected to match the
    function.
  • Docs clarify pf2_base as an advanced-and-internal package.

Fixes

  • getTakizawaRejection now uses the first FFT bin above 1 Hz as a scalar index
    rather than the full index vector.
  • Signed-zero handling: negative zero round-trips canonically as +0 through
    the JSON transport, with explicit test coverage.

Full Changelog: v1.0.0...v1.0.1