Skip to content

feat(catalog): graduate the FlowController Family (n=4 rule-of-three i22/7-BM/LIX/XFP)#400

Merged
xmap merged 1 commit into
mainfrom
worktree-xfp-deployment
Jun 26, 2026
Merged

feat(catalog): graduate the FlowController Family (n=4 rule-of-three i22/7-BM/LIX/XFP)#400
xmap merged 1 commit into
mainfrom
worktree-xfp-deployment

Conversation

@xmap

@xmap xmap commented Jun 26, 2026

Copy link
Copy Markdown
Owner

What

Graduates FlowController from a loose family into a catalog Family. It was a flagged graduation candidate: LIX (#388) fired the rule-of-three at n=3 and XFP (#395) became the 4th consumer and marked it "overdue", both deferring the graduation as a separate gated decision. This is that decision (the EmissionSpectrometer #376 precedent).

This is not a new beamline — XFP itself already landed via #395 (a parallel session built it while this was in planning). This PR is the focused, non-duplicate graduation delta those scaffolds deferred.

Changes

  • catalog/catalog.yaml: add FlowController as a Family — a continuous-setpoint flow / pump actuator presenting the Regulator Role, the settable-actuator sibling of TemperatureController (distinct by what it actuates: mass flow / pump rate, not temperature). One Family spans mass-flow controllers and syringe / peristaltic / HPLC pumps (pump-vs-MFC a per-Asset setting). Updated the TemperatureController note (its sibling graduated alongside).
  • Guard dicts (test_beamline_descriptor.py): removed FlowController from _ALLOWED_LOOSE_FAMILIES and _PROMOTION_REVIEWED.
  • Swept the four consumer deployments (i22, 7-BM, LIX, XFP) descriptors + docs from loose/overdue → graduated, and fixed stale cross-references in ISS, i10, ISR, and the architecture naming reference that still listed FlowController as loose / not-yet-modelled.
  • Residual kept: the wider fluidic chain beyond the pump (selector valves, SEC columns, flow cells, fraction collectors) stays in the ControlPort seam pending its own rule-of-three (FLUID-1); FLOW-1's command-vs-read residual is intact.

Verification

🤖 Generated with Claude Code

… actuator; n=4 rule-of-three i22/7-BM/LIX/XFP)

FlowController was a loose family held as a graduation candidate: LIX (#388) fired
the rule-of-three at n=3 and XFP (#395) became the 4th consumer and flagged it
"overdue", both deferring the graduation as a separate gated decision. This is that
decision (the EmissionSpectrometer #376 precedent).

Adds FlowController to catalog/catalog.yaml as a Family: a continuous-setpoint flow /
pump actuator presenting the Regulator Role, the settable-actuator sibling of
TemperatureController (distinct by what it actuates: mass flow / pump rate, not
temperature). One Family spans mass-flow controllers and syringe / peristaltic / HPLC
pumps (pump-vs-MFC a per-Asset setting). Removed from _ALLOWED_LOOSE_FAMILIES and
_PROMOTION_REVIEWED. Updated the TemperatureController note (its sibling graduated
alongside).

Swept the four consumer deployments (i22, 7-BM, LIX, XFP) descriptors + docs from
loose/overdue to graduated, and fixed two stale cross-references (ISS, i10) that named
FlowController as loose. The wider fluidic chain beyond the pump (selector valves, SEC
columns, flow cells, fraction collectors) stays in the ControlPort seam pending its own
rule-of-three (FLUID-1); FLOW-1's command-vs-read residual is kept. No new beamline
(XFP itself already landed via #395); this is the focused graduation delta.

403 deployment guard tests pass; strict docs build clean; ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@xmap xmap enabled auto-merge (squash) June 26, 2026 21:15
@github-actions

Copy link
Copy Markdown

Coverage report

This PR does not seem to contain any modification to coverable code.

@xmap xmap merged commit ceb92fb into main Jun 26, 2026
16 checks passed
@xmap xmap deleted the worktree-xfp-deployment branch June 26, 2026 21:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant