Skip to content

OpenFlowsheet v0.2.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 11:08
· 1747 commits to main since this release

In development on main; nothing below is released. The gate table is added to this section
at the release candidate (M07).

M01 — the Peng–Robinson route of the ammonia loop (W22)

  • C1 property route. Peng–Robinson with the light gases vapour-only, its root and phase
    rules, an equilibrium-vapour flash, and the formation datum PR-C1-ref-v1 (ADR 0026); the
    parameters are cited and registered. The reactor boundary of the loop is ADR 0027.

M02 — the PyMRM reactor adapter (W21)

  • External reactor as a unit model. The pinned PyMRM reactor runs in an out-of-process child,
    one per attempt, under a three-layer kill chain, with process-level experiment identity and an
    exact cache of deterministic outcomes (ADR 0033); it runs inside a flowsheet solve (ADR 0034),
    with model replacement and promotion as a checked commit (ADR 0035). Experiment records and
    the coupled route are replay artifacts. A synthetic stand-in reactor ships for the default gate
    and is listed as synthetic.

M03 — sensitivities, studies and the NLP bridge (W24, part)

  • Parametric sensitivities and studies. Parameters are pinned inputs; their derivative comes
    from a bit-identical parametric twin and is issued only at a qualified regular root; sweeps and
    the estimation example are studies over those parameters (ADR 0031).
  • General NLP bridge. A PyNumero gray box over the parametric twin solved by an audited
    cyipopt, judged only on the re-solved, certified simulation (ADR 0032). It needs the optional
    nlp extra and its licences (accepted by Frank 2026-10-16).

M04 — surrogate evidence (W23)

  • Surrogates as evidence. A registered uniform reference box, a plan registered before the
    parent runs, joint split-conformal intervals, and promotion decided by an integer coverage test
    (ADR 0036). The surrogate is a native unit pinned by its manifest's hash, promoted and rolled
    back through the checked commit (ADR 0037); the surrogate_study job kind joins the contract.

M05 — the trust-region study of the C1 loop (W24)

  • Trust-region adapter. Pyomo's trust-region filter over a projection of the canonical
    problem, with the audited Ipopt executable for its subproblems (ADR 0038); a conditional
    scipy-only fallback is ADR 0040. The C1 study optimizes the reactor inlet temperature for
    liquid NH₃ product; candidates are judged by parent checks and every true-model call is
    accounted (ADR 0039).

M06 — the diagnostic web shell (W26)

  • serve-http --ui. A browser view of one project at /ui/, on the same origin as the
    unchanged HTTP API: revisions with a flowsheet drawing, validation and degrees of freedom, the
    equation view (structure), runs with attempts, trace and plan (live while a job runs),
    certificates, failure bundles, streams and units, bundle files with download, revision and run
    comparison, and the agent history. Solve and Cancel are its only actions; it edits nothing.
    docs/web-shell.md says what each screen shows and does not claim; ADR 0030 (proposed) and
    docs/design/M06-web-shell.md are the design.
  • Contract only. Hand-written ES modules and CSS shipped as package data: no build step, no
    framework, nothing third-party. One fetch call site, URLs from a route table generated from
    OPERATIONS, exactly 17 operations called; records read whole through the raw export and
    checked against their registered SHA-256. The bearer token stays in session storage and the
    Authorization header; every /ui response carries a strict Content-Security-Policy.
  • Contract amendments (ADR 0019 Amendment 3, proposed). inspect_structure gains a row and
    column index and, for an unroutable revision, the validation's own analysis; diff_revisions
    gains element-level detail; a new operation, list_audit, reads the project's audit history
    (own rows with read, other principals' with policy).
  • Tests. Static scans of the shell's sources; Node's built-in runner on the view models and
    screens against fixtures captured from real responses (check.sh needs Node ≥ 22 unless
    OPENFLOWSHEET_SKIP_WEB_TESTS=1); every used operation over HTTP; a headless-Chromium test of
    every screen with a request recorder, Solve, a live and a cancelled job, and the downloads
    (skipped without a browser, required on CI's x86-64 leg).

M07 — the reference journey and the release gate (W25)

  • Reference journey. One decision (the reactor inlet temperature) taken through four rungs of
    fidelity, with decisions compared by the parent's objective against its noise floor; W25 is
    judged on reporting what happened, not on whether the decision changed (ADR 0041).
  • The 0.2.0 gate. scripts/v0_2_gate.py gains v0.2-gate-v1, which claims all seventeen
    gates V11–V20 and W21–W27, each judged at its own candidate, with per-release acceptance of
    failures (ADR 0042, proposed).

What it is not

  • not a sandbox
  • Linux only
  • reactor results reproduce from records (R3)
  • T_in 653.15-693.15 K, P 9-11 MPa, H2/N2 2.5-3.5, inerts 0.035-0.2, per-tube flow 0.5-2 x nominal
  • no empirical validation of the C1 loop
  • no reactor result has been compared with experimental data by this project: the group's
    published comparison is the group's evidence, and every real-reactor number is the group's model
    at the pin, a regression, whose discretization bias is 1.0–1.4 % in NH₃ (M02 design note §13)
  • no global optimality
  • the optimization routes need the optional nlp extra
  • the stand-in reactor is synthetic
  • no external benchmark score
  • no CFD or Peclet refinement
  • no equilibrium-stage subsystem