FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Review issues — fhsim

Findings from code review that await an owner decision or an implementation. Each issue is one file in issues/details/, which holds the evidence, the effect, the possible fix, the test that would prove it and the risk. Resolved issues are kept in issues/resolved/ so that their numbers are never reused. Issues that concern a SimObject are also shown on that model's documentation page.

How to work an item

  1. Reproduce the Evidence at the file:line given in the detail file, at HEAD.
  2. For a blocked item, get the owner's answer to "Decision needed" first, then set Status to ready.
  3. Write the proving test, apply the fix, check the Risk paragraph.
  4. git mv the file to issues/resolved/, add a **Resolved:** <commit>, <date> paragraph after the table, delete the matching \xrefitem reviewissue "Review issues" "Review issues" \ref fhsim_core_issue_<ID> lines from the headers, rerun the script and commit it all together.

New issue: --new <slug> "<title>", or add issues/details/<slug>.md with the metadata table but no ID row; the script assigns the next free number, writes the heading and renames the file to <TAG>-<ID>-<slug>.md.

Legend

  • Class
    • BUG code does something other than its documentation or sibling code says
    • KNOWN-LIMITATION behaviour gap by design or omission, document rather than fix silently
    • ARCHITECTURE structure, dependencies, build layout, dead code and stale artefacts
    • DOCUMENTATION missing or wrong documentation or example
    • TEST test coverage or infrastructure
    • API public name (port, state, parameter, registration string) whose change breaks input files
    • SECURITY credentials and supply chain
  • Severity
    • 3 wrong numbers, a crash or a secret exposure reaches a user
    • 2 a documented interface does not work as documented
    • 1 tidiness, readers and tools only
  • Status
    • blocked needs the owner decision named in the file
    • ready fully specified

Open issues (14)

ID Class Severity Status
FHSIM-0072 TEST 2 ready
FHSIM-0073 DOCUMENTATION 2 ready
FHSIM-0108 KNOWN-LIMITATION 2 blocked
FHSIM-0152 BUG 2 blocked
FHSIM-0070 BUG 1 ready
FHSIM-0074 TEST 1 ready
FHSIM-0113 BUG 1 ready
FHSIM-0115 BUG 1 ready
FHSIM-0119 BUG 1 ready
FHSIM-0147 TEST 1 ready
FHSIM-0148 BUG 1 ready
FHSIM-0167 KNOWN-LIMITATION 1 ready
FHSIM-0174 KNOWN-LIMITATION 1 ready
FHSIM-0175 TEST 1 ready
  • FHSIM-0072 — A Debug build with visualization leaves about 148 GB of test FMUs in its build folder
  • FHSIM-0073 — The v3 migration guide and the tutorial pages miss what porting fhsim_tutorial and fhsim_maritime needed
  • FHSIM-0108 — A licence file cut by more than the writer's header padding loses its last entry without an error
  • FHSIM-0152 — AcceptedStep and the diagnostics read the last solver iterate under SUNDIALS
  • FHSIM-0070 — FhSimUI segfaults after it reports a failed render system initialisation
  • FHSIM-0074 — RK45_i gains energy in an under-resolved contact where v2 did not
  • FHSIM-0113 — An empty <Var Value=""> is exported as a Real parameter with no values
  • FHSIM-0115 — The FMU exporter reads Size_<port> with std::stoi, so Size_y="2x" reads 2
  • FHSIM-0119 — A stop request is not polled for a step that produced no data
  • FHSIM-0147 — The NetworkRoundTrip tests bind fixed TCP ports and collide when two runs overlap
  • FHSIM-0148 — -o is ignored without a word for a Replay or Network provider without OBSERVERS
  • FHSIM-0167 — An FMU does not tell the master that a model asked to stop
  • FHSIM-0174 — BackwardEuler_i has no switch to a numeric Jacobian
  • FHSIM-0175 — The self-connection check misses other users of the model Jacobian

Resolved issues (163)

  • FHSIM-0001 (KNOWN-LIMITATION) — FMU export metadata is not reproducible. Resolved: 02eaf6b8, 2026-09-22. File: resolved/FHSIM-0001-fmu-export-metadata-is-not-reproducible.md
  • FHSIM-0002 (BUG) — copySimObjectLibraries uses hasVis where bundlesVisualization is meant. Resolved: e34a721b, 2026-09-22. File: resolved/FHSIM-0002-simobject-vis-suffix-ignores-no-bundled-vis.md
  • FHSIM-0003 (BUG) — A visual FMU omits the plain SimObject modules, so visualization=false fails. Resolved: 39bb410e, 2026-09-21. File: resolved/FHSIM-0003-visual-fmu-omits-plain-simobject-modules.md
  • FHSIM-0004 (BUG) — ExpressionEvaluator rewrites every string attribute, so a SimObject cannot receive structured text. Resolved: 111e4922, 2026-09-22. File: resolved/FHSIM-0004-expression-evaluator-mangles-json-attributes.md
  • FHSIM-0005 (KNOWN-LIMITATION) — OdeFcn writing outside its own state block is unchecked. Resolved: 6d769bef, 2026-09-22. File: resolved/FHSIM-0005-odefcn-local-state-indexing-is-unchecked.md
  • FHSIM-0006 (BUG) — Direct port links reuse an uncleared Jacobian workspace, so one link reads the previous link's numbers. Resolved: e34a721b, 2026-09-22. File: resolved/FHSIM-0006-port-jacobian-workspace-not-cleared-for-direct-links.md
  • FHSIM-0007 (KNOWN-LIMITATION) — The assembler does not check that a port-Jacobian callback wrote only inside its block. Resolved: c0430cd5, 2026-09-22. File: resolved/FHSIM-0007-jacobian-callbacks-write-outside-their-block-unchecked.md
  • FHSIM-0008 (BUG) — –autocopy resolves a model's file references against two different directories, so nothing is bundled and the export can abort. Resolved: d8b3b0ff, 2026-09-23. File: resolved/FHSIM-0008-autocopy-resolves-model-file-references-against-two-directories.md
  • FHSIM-0009 (BUG) — A visual FMU cannot initialise: a SimObject module links Ogre codecs that the FMU layout puts outside its RUNPATH. Resolved: b4a0809d, 2026-09-23. File: resolved/FHSIM-0009-visual-simobject-module-needs-an-ogre-codec-outside-its-runpath.md
  • FHSIM-0010 (TEST) — The Jacobian checker samples only states near the initial condition. Resolved: b005ec27, 2026-09-24. File: resolved/FHSIM-0010-jacobian-check-samples-only-near-initial-state.md
  • FHSIM-0011 (TEST) — A partial Jacobian in one SimObject switches the Jacobian check off for the whole scenario. Resolved: b005ec27, 2026-09-24. File: resolved/FHSIM-0011-jacobian-check-cannot-exempt-documented-partial-blocks.md
  • FHSIM-0012 (TEST) — The Jacobian checker never places the object under test at a non-zero state offset. Resolved: b005ec27, 2026-09-24. File: resolved/FHSIM-0012-jacobian-check-never-uses-nonzero-state-offset.md
  • FHSIM-0013 (BUG) — The Jacobian checker evaluates analytical Jacobians against port caches from another state. Resolved: b5dce5b1, 2026-09-24. File: resolved/FHSIM-0013-jacobian-check-reads-stale-port-caches.md
  • FHSIM-0014 (BUG) — The implicit Euler integrator evaluates the analytical Jacobian against port caches from another state. Resolved: d509dcea, 2026-09-24. File: resolved/FHSIM-0014-implicit-euler-analytic-jacobian-reads-stale-port-caches.md
  • FHSIM-0015 (BUG) — The SUNDIALS Jacobian callback assumes the port caches describe the state it is handed. Resolved: 9a8e820c, 2026-09-24. File: resolved/FHSIM-0015-sundials-jacobian-port-cache-state-unverified.md
  • FHSIM-0016 (BUG) — The FMU build key and the archive can disagree about the bundled documentation. Resolved: 8c9e382b, 2026-09-24. File: resolved/FHSIM-0016-fmu-documentation-build-key-and-archive-can-disagree.md
  • FHSIM-0017 (TEST) — The state-offset shift check assumes a layout it does not verify. Resolved: e8948f3e, 2026-09-24. File: resolved/FHSIM-0017-jacobian-offset-shift-guard-does-not-check-layout.md
  • FHSIM-0018 (TEST) — A scope override that names a stateless SimObject is accepted and exempts nothing. Resolved: 2556f64d, 2026-09-24. File: resolved/FHSIM-0018-jacobian-override-on-stateless-object-accepted.md
  • FHSIM-0019 (TEST) — A tighter scope override is not applied to cross-coupling entries, and is counted as relaxed. Resolved: 8a90bca5, 2026-09-24. File: resolved/FHSIM-0019-jacobian-scope-override-cannot-tighten-cross-coupling.md
  • FHSIM-0020 (TEST) — SUNDIALS port-cache probe proves fresh values, not that the RHS buffer is still alive. Resolved: 7af90b83, 2026-09-24. File: resolved/FHSIM-0020-sundials-jacobian-probe-proves-values-not-buffer-liveness.md
  • FHSIM-0021 (TEST) — The regression comparison RMS-es away non-finite and subnormal samples in the run or the reference. Resolved: 09476238, 2026-09-29. File: resolved/FHSIM-0021-harness-rms-hides-non-finite-and-subnormal-samples.md
  • FHSIM-0022 (ARCHITECTURE) — Nothing checks that a published port sample is finite and normal, so an uninitialised port-backing member is silent. Resolved: Will not fix, 2026-09-30 (owner decision: no run-time port-sample check will be added). File: resolved/FHSIM-0022-no-check-that-published-port-samples-are-finite.md
  • FHSIM-0023 (API) — SimObject has no render teardown hook, so a SimObject cannot release its Ogre objects before the Ogre root is gone. Resolved: 82b4652a, 2026-09-29. File: resolved/FHSIM-0023-simobject-renderrelease-hook.md
  • FHSIM-0024 (TEST) — The Jacobian checker's model rebuilds cannot suppress SimObject file output, so a file a SimObject writes during the run is clobbered or duplicated. Resolved: f1d3bf1d, 2026-09-29. File: resolved/FHSIM-0024-jacobian-checker-rebuilds-clobber-simobject-file-output.md
  • FHSIM-0025 (BUG) — Shared resources are not published until after InitialConditionSetup, so no SimObject can use one while computing its initial conditions. Resolved: f4090d17, 2026-09-29. File: resolved/FHSIM-0025-shared-resources-unresolved-during-initial-condition-setup.md
  • FHSIM-0026 (BUG) — –autocopy warns of a bundle-name clash whenever one file is referenced twice. Resolved: dc1c7db5, 2026-09-29. File: resolved/FHSIM-0026-autocopy-warns-on-repeated-reference.md
  • FHSIM-0027 (DOCUMENTATION) — The default real-time-factor tooltip names F4 for the simulation controls, which are on F3. Resolved: 50f9fece, 2026-09-29. File: resolved/FHSIM-0027-rtf-tooltip-names-f4-for-sim-controls.md
  • FHSIM-0028 (BUG) — Sundials BDF defaults to unpreconditioned SPGMR (maxl 5) for dense models; Newton fails in transients and the step collapses. Resolved: the commit that adds tests/integrator/sundials/SundialsLinearSolverSelection_test.cpp, 2026-10-13. Owner ruling 2026-10-13: option (a). Without a <LinearSolver> element, a model whose linear solver resolves to DenseLU runs the SUNDIALS DENSE direct solver when <Jacobian Type> is dense (the default) and DenseJacobianFits(n); otherwise SPGMR stays and a warning names why (ChooseLinearSolver in SundialsSolverBuilder.cpp, for CVODES and ARKODE DIRK; SundialsSettings::linearSolverGiven records the element). An explicit <LinearSolver Type="SPGMR"/> is kept. Test SundialsLinearSolverSelection.NoLinearSolverElement_DenseLuModel_RunsSundialsDense (40-state dense model, BDF, no <LinearSolver>): failed before with 147 linear iterations and no DENSE in the log, passes with 0 linear iterations and at least one Jacobian evaluation; ExplicitSpgmr_DenseLuModel_KeepsSpgmr pins the explicit choice. Moved baseline: tests/golden/IntegratorConfig/IntegratorConfig_Adams.csv (Adams without <LinearSolver>, now DENSE; same 29 output rows at different internal-step times), in the separate commit "Baselines for FHSIM-0028". Not cured (recorded by the ruling): the two DENSE observations under "Reproduction and numbers", the stiffer variant (k = 1e2) that aborts at t = 2.59 s and the 0.1 s blend that still dips to 5e-4 … 1.5e-3 s, remain undiagnosed.. File: resolved/FHSIM-0028-sundials-bdf-default-spgmr-unpreconditioned-dense.md
  • FHSIM-0029 (BUG) — The Sundials summary logs the model's resolved solver type (DenseLU) as the linear solver while SUNDIALS runs SPGMR. Resolved: the commit that adds tests/integrator/sundials/SundialsLinearSolverSelection_test.cpp, 2026-10-13. Owner ruling 2026-10-13: log the SUNDIALS solver created plus the model's resolved type, and warn at the silent path. The summary line is now Linear solver : SPGMR (maxl 5, unpreconditioned); model solver type DenseLU (or preconditioner <name>); DENSE and BAND print as before (FhIntegratorSundials::DescribeLinearSolver). SetupSpgmrPreconditioner logs a warning when the model's solver type has no structural preconditioner and SPGMR runs unpreconditioned. Test SundialsLinearSolverSelection.ExplicitSpgmr_DenseLuModel_LogNamesSpgmrAndTheModelSolverType: failed before (the log read Linear solver : DenseLU, no warning), passes after.. File: resolved/FHSIM-0029-sundials-log-names-model-solver-not-sundials-solver.md
  • FHSIM-0030 (BUG) — The SUNDIALS Jacobian callback leaves J unfilled when the model withdraws its Jacobian during the run. Resolved: e8f634d6, 2026-09-28. File: resolved/FHSIM-0030-sundials-jacobian-callback-leaves-j-unfilled-when-claim-withdrawn.md
  • FHSIM-0031 (BUG) — A model with more than 46 340 states fails model assembly, whatever the integrator. Resolved: ce8d0484, 2026-09-28. File: resolved/FHSIM-0031-model-above-46340-states-fails-assembly.md
  • FHSIM-0032 (ARCHITECTURE) — Every model allocates n × n Jacobian buffers at setup, also for explicit integration. Resolved: 3a187c5b, 2026-09-28. File: resolved/FHSIM-0032-every-model-allocates-n-squared-jacobian-buffers.md
  • FHSIM-0033 (KNOWN-LIMITATION) — The dense Jacobian paths index an n × n array with int, which overflows above 46 340 states. Resolved: a9aca817, 2026-09-28. File: resolved/FHSIM-0033-dense-jacobian-paths-index-with-int.md
  • FHSIM-0034 (ARCHITECTURE) — The numerical Jacobian pass perturbs every column and overwrites zeros of analytical blocks. Resolved: d8fcf7f2, 2026-09-28. File: resolved/FHSIM-0034-numerical-jacobian-pass-perturbs-every-column.md
  • FHSIM-0035 (ARCHITECTURE) — The reverse (row) colouring costs O(n · nnz) at every model setup and nothing reads it. Resolved: 77262664, 2026-09-29. File: resolved/FHSIM-0035-reverse-colouring-is-quadratic-and-unused.md
  • FHSIM-0036 (BUG) — Auto-selected NearTridiagonal preconditioner fails at t = 0 with CV_LSETUP_FAIL (BDF, default linear solver). Resolved: the commit that adds tests/integrator/sundials/SundialsLinearSolverSelection_test.cpp, 2026-10-13. Owner ruling 2026-10-13: fix as a plain bug, no broader DENSE rule. Cause: NearTridiagonalAdapter (src/engine/integrator/linear/LinearSolverAdapters.h) had no FactorizeFromModel, so the ILinearSolver default returned false and FhIntegratorSundials::PrecSetup, which calls only FactorizeFromModel and RefactorizeWithGamma, returned -1 on its first call (CV_LSETUP_FAIL). The detection is not at fault: DetectStructure prefers the coarsest chain, so bandwidth=0, extra_blocks=0 is a valid two-block chain. Fix: NearTridiagonalAdapter::FactorizeFromModel evaluates the dense Jacobian through IJacobianSystem::OdeJacobian and factorizes it as Factorize does; PrecSetup logs an error naming the preconditioner, t and gamma when a setup fails. Test SundialsLinearSolverSelection.NoLinearSolverElement_NearTridiagonalModel_RunsToTheEndAccurately (40-state ring, BDF, no <LinearSolver>): failed before with CVode() failed with flag = -6 at t = 0, passes after and matches exp(A t) x0 to 1e-5; PrecSetupFailure_LogsThePreconditionerName pins the log.. File: resolved/FHSIM-0036-sundials-neartridiagonal-preconditioner-lsetup-fail-at-t0.md
  • FHSIM-0037 (API) — ISimObjectCreator::IsFileOutputSuppressed() is pure virtual, so every ISimObjectCreator implementer outside fhsim stops compiling. Resolved: 34d71a51, 2026-10-03 (red before the fix: ISimObjectCreator.CreatorWithoutFileOutputOverride_IsNotAbstract and _DoesNotSuppressFileOutput failed with std::is_abstract_v<CreatorWithoutFileOutputFlag> true; green after it; full ctest 334/334). File: resolved/FHSIM-0037-is-file-output-suppressed-is-pure-virtual.md
  • FHSIM-0038 (BUG) — InputReader cannot open a File given as an absolute path. Resolved: 060e9e23, 2026-10-07 (red before the fix: InputReaderResolutionTest.AbsoluteFileName_OutsideBothSearchDirs_OpensThatFile failed with the path <cwd>//<absolute path>; green after it; testFhSim 685/685, full ctest 334/334). File: resolved/FHSIM-0038-inputreader-absolute-path.md
  • FHSIM-0039 (BUG) — NumCores > 1 makes small models hundreds of times slower. Resolved: 5630a0f9 and 9424e96c, 2026-10-08 (the 4-object ring: 0.09 s on 1 core, 44.0 s on 8 before; 0.09 s on both after, output byte-identical. Model-scale Alfredo3 trawl: 77 s on 1 core, 2290 s on 8 before; 74 s and 70 s after. fhsim-parallel-perf 8 cores 1.0x serial; testFhSim 718/718 (685 before, 33 new), full ctest 335/335; trawlwriter's 8-core byte-identity tests pass. Table in fhsim_workspace/features/threadpool/FEATURE.md). File: resolved/FHSIM-0039-numcores-small-models-slow.md
  • FHSIM-0040 (BUG) — Parallel evaluation: thresholds unmeasured, pool workers fall asleep between batches, ThreadManager unused. Resolved: a4663c51, 2026-10-08 (1 ms spin and chained wake-ups: eight 170 us SimObjects 2.4 s on 8 cores, 4.0 s before, 14.8 s on one; sixteen 4.5 s, 6.3 s before. Thresholds: 4-object floor removed; 250 us kept, joined by a 1.5x speed-up bound; trawl models unchanged and 1- and 8-core output byte-identical. ThreadManager removed, Task kept. testFhSim 724/724, ctest 335/335. Tables in fhsim_workspace/features/threadpool-tuning/FEATURE.md). File: resolved/FHSIM-0040-parallel-thresholds-pool-spin.md
  • FHSIM-0041 (BUG) — FMU unloads the FhSim DLL while its worker thread still has a libxml2 thread-exit callback pending (Windows). Resolved: ac758259, 2026-10-10 (option 1, owner decision: ReleaseSimulation_, shared by Terminate, Reset and the destructor, joins the worker after fpFreeContext and before m_dll.Unload(); Reset restarts it; SingleThreadWork::retire is idempotent. Test fmu-single-thread-work. Linux Release no-vis ctest 336/336, -L fmu 255/255, FMU directional-derivative and lifecycle tests --repeat until-fail:20 142/142; Debug no-vis the same: 336/336, 255/255, 142/142. The Windows crash was never reproduced, so the fix is unverified there; the libxml2 callback still runs asynchronously on a thread-pool thread, so a short window after the join remains, as noted under Possible fix). File: resolved/FHSIM-0041-fmu-unloads-simdll-before-worker-exits.md
  • FHSIM-0042 (BUG) — FhsimDllBridge::Load leaves the library loaded when it throws on missing exports. Resolved: the commit that adds tests/fmu/FhsimDllBridge_test.cpp, 2026-10-11 (as proposed: Load calls Unload() before it throws on missing exports, FhsimDllBridge.h documents that a throw leaves the bridge unloaded, and the unreachable IsLoaded() check after Load in ExitInitializationMode is removed. Test fmu-dll-bridge, which loads fhsim_partial_export_library, a module exporting only InitFromFile and FreeFhSimContext; it failed before the fix with IsLoaded() true and fpInitFromFileNoVis/fpFreeContext set). File: resolved/FHSIM-0042-fmu-dllbridge-load-leaves-handle-on-missing-exports.md
  • FHSIM-0043 (ARCHITECTURE) — InputReader::GetElement scans every sibling from the first on each read, so reading n sibling elements is quadratic in n. Resolved: the commit that adds InputReaderPerf.DISABLED_ReadingEveryElement_ScalesLinearlyWithTheElementCount (tests/core/fhUtilities/InputReader_test.cpp), 2026-10-13. Owner ruling 2026-10-13 (MARE-0211): fix upstream in fhsim, bit-identical. fhsim::xml::detail::IndexedFirstChildElement(doc, parent, name) (internal header src/simobject/utilities/XmlChildIndex.h, not installed; no public API change) returns exactly parent.FirstChildElement(name): on the first call for a parent it indexes the first child element of each name, and a name missing from the index falls back to the scan (so children added later with AddChild, which appends, are found). InputReader::GetElement (both overloads) resolves every path component through it. The index lives in the libxml2 document's _private field and is freed by ~XmlDoc and the move assignment, so neither InputReader nor XmlDoc changes layout: consumer binaries built against 3.3.5, which Conan's semver_mode treats as compatible, stay valid. A cache of only the last resolved path, as MARE-0211 first proposed, would not be enough: each El<i> is a new path, and resolving it from the root still scans i siblings. Timing, InputReaderPerf (two integer attributes read from each of n sibling elements, best of three, Release): before 5 000 elements 0.276 s, 20 000 elements 4.35 s (ratio 15.8, quadratic); after 0.0015 s and 0.0072 s (ratio 4.8). The test fails before (ratio above 8) and passes after; it is DISABLED_ in fhsim and runs in the ctest entry fhsim-inputreader-perf (label perf). InputReaderElementLookup.* pins the semantics: the first of duplicate sibling names, a child added after a lookup, every element of 500 siblings read in reverse order.. File: resolved/FHSIM-0043-inputreader-getelement-quadratic-in-siblings.md
  • FHSIM-0044 (BUG) — The FMU exporter accepts the <Engine>/<Sundials> integrator elements the engine removed in FhSim 3. Resolved: the commit that removes DISABLED_ from FmuPortMappingReader.RemovedEngineElement_ThrowsNamingFhSim3 and RemovedSundialsElement_ThrowsNamingFhSim3 (tests/fmu/FmuPortMappingReader_test.cpp), 2026-10-15. Owner rulings 2026-10-15, E9-Q0 = a and E9-Q1 = 1. FmuPortMappingReader::Read throws std::runtime_error(fhsim::removedIntegratorElementMessage(tag)) when the simulation element has <Engine> or <Sundials>; the engine reports the same text (moved into src/engine/core/SimulationElementResolver.h by the preceding refactor commit, pinned whole by FhsimNextIntegrationTest.RemovedEngineElement_ThrowsWithMigrationHint). Every export and --print-build-key passes through Read. Red before (both tests: <no throw>), green after. The dead dialect branches in the exporter and the runtime stay until plan E9 task 10.. File: resolved/FHSIM-0044-exporter-accepts-removed-integrator-dialect.md
  • FHSIM-0045 (BUG) — –guess-output-interface reads the output spec only from <Engine>/<Sundials>, so it fails for every FhSim 3 input. Resolved: the commit that removes DISABLED_ from InterfaceGuessingService.FhSim3InputSelectingPorts_AddsFmiOutputObject (tests/fmu/InterfaceGuessingService_test.cpp, ctest fmu-interface-guessing), 2026-10-15. Owner ruling 2026-10-15, E9-Q5 = 1. When the simulation element has neither <Engine> nor <Sundials>, GuessOutputInterface takes the selection from the Select of the first <OBSERVERS><FileOutput>; the objects:all, port and state checks apply to it unchanged (FhSim3InputSelectingAllObjects_Returns2AndAddsNothing). Red before (returned 3), green after. doc/user/using-the-api/fmu-export.md says where the selection is read.. File: resolved/FHSIM-0045-guess-output-interface-fails-for-fhsim3-input.md
  • FHSIM-0046 (BUG) — An input without <StepControl Step> exports integrator_timestep = 0.0, also for a method that needs a fixed step. Resolved: the commit that removes DISABLED_ from FmuPortMappingReader.FixedStepMethodWithoutStep_ExportThrows (tests/fmu/FmuPortMappingReader_test.cpp), 2026-10-15. Owner ruling 2026-10-15, E9-Q2 = 3. FmuPortMappingReader::Read throws when <Integrator Method> (attribute name matched in any case, as the engine does) names a method that runs only with a fixed step and <StepControl Step> is missing or not positive. The list is fhsim::methodNeedsFixedStep in the header-only src/engine/core/FixedStepMethods.h, which the exporter compiles without the engine; IntegratorConfigFactory.Registry_FixedStepMethods_MatchTheSolvers (fhsim) compares it with every row and alias of the engine's method table and the solver each Engine row builds (a list missing the alias StableSolver fails it). Red before (<no throw>), green after. Variable-step methods keep the start value 0.0 (VariableStepMethodWithoutStep_PublishesZeroAsDefault, green before and after); doc/user/using-the-api/fmu-export.md documents it as "the integrator's own step control".. File: resolved/FHSIM-0046-fmu-publishes-zero-integrator-timestep.md
  • FHSIM-0047 (BUG) — The FMU exporter and runtime read <Integrator InitialStatesFile> by one exact spelling; the engine accepts any case and initial_states_file. Resolved: the commit that adds FmuPortMappingReader.InitialStatesFileInAnySpelling_PublishesIt and FmuResourceCopier.InitialStatesFileInOtherSpelling_IsBundledAndRewritten, 2026-10-15. fhsim::isInitialStatesFileAttribute / initialStatesFileAttributeName (src/engine/core/SimulationElementResolver.h, later in the model input module) apply the engine's rule (any case, InitialStatesFile or initial_states_file, last match counts). The exporter reads the file by it and --autocopy rewrites the attribute under the name the model uses; the runtime writes the host's state_file under that name too, or InitialStatesFile when there is none. Red before (state_file start { "" } for the other spellings; file not bundled), green after.. File: resolved/FHSIM-0047-exporter-runtime-read-initial-states-file-by-one-spelling.md
  • FHSIM-0048 (BUG) — The FMU exporter does not substitute $Variables in <Integrator> attributes, as the engine does. Resolved: the commit that removes DISABLED_ from FmuPortMappingReader.VariableInInitialStatesFile_PublishesTheSubstitutedFile and VariableInMethod_FixedStepMethodWithoutStepThrows, 2026-10-15. Owner ruling 2026-10-15. fhsim::ModelInput reads <Integrator Method> and the initial states file after the engine's $Name substitution (fhsim::substituteVariables, moved from Parse::SubstituteVariable by the preceding refactor commit; the <VARIABLES> map by the engine's rule, Var/var, first definition counts). An undefined name throws Undefined variable: <text>. So the exporter publishes the substituted state_file, --autocopy bundles the substituted file, and the fixed-step rule sees the substituted method. Red before ({ "$ic" }; <no throw>), green after; ModelInput.IntegratorAttributes_* red before, green after. In the engine the reads see text Parse has already substituted, so the second pass changes nothing unless a variable's value itself holds a $.. File: resolved/FHSIM-0048-exporter-does-not-substitute-variables-in-integrator-attributes.md
  • FHSIM-0049 (BUG) — The SUNDIALS summary says Jacobian policy hybrid (resolved: hybrid) when no SimObject has a Jacobian and SUNDIALS difference quotients run. Resolved: the commit "Behaviour: the SUNDIALS summary names the numeric Jacobian a hybrid policy falls back to (FHSIM-0049)", 2026-10-15 (owner ruling: fix in E8 phase 1 as its own behaviour commit). The solver plan writes the summary text from its own wiring decision: with Policy="hybrid" and no model Jacobian the line reads hybrid (resolved: numeric (SUNDIALS built-in)). Test SolverPlanSummary.HybridPolicyWithoutAnySimObjectJacobian_NamesTheNumericSourceThatRuns: failed before (hybrid (resolved: hybrid)), passes after; table row Bdf_PolicyHybrid_NoneDense updated in the same commit.. File: resolved/FHSIM-0049-hybrid-policy-summary-names-a-source-that-does-not-run.md
  • FHSIM-0050 (BUG) — SPGMR with a structural preconditioner type but no sparsity pattern installs DenseLU as the preconditioner and fails at t = 0. Resolved: the commit "Behaviour: a structural preconditioner type without a pattern falls back to the Jacobi diagonal (FHSIM-0050)", 2026-10-15. CreateStructuralSolver (LinearSolverFactory) returns nullptr when the solver it built (after its fallbacks) cannot factorize from the model; the solver plan then takes the existing "Preconditioner setup failed, falling back to the Jacobi diagonal preconditioner" path. Test PrecSetupPerAdapter.StructuralTypeWithoutPattern_FallsBackToJacobiAndRunsToTheEnd: failed before (preconditioner "DenseLU", CVode flag -6 at t = 0), passes after. Plan E8 phase 2 (IStructuralSolver) makes the rule a compile-time one.. File: resolved/FHSIM-0050-structural-preconditioner-type-without-pattern-installs-denselu.md
  • FHSIM-0051 (TEST) — JacobianCallback matrix copy is not testable without a SUNDIALS run (CopyIntoSunMatrix). Resolved: feature/fix_issues, 2026-10-21 (SundialsMatrixCopy::CopyIntoSunMatrix in SundialsMatrixCopy.h/.cpp, tests in SundialsMatrixCopy_test.cpp; the no-entries sparse case is pinned as is: J is left untouched). File: resolved/FHSIM-0051-copyintosunmatrix-free-function.md
  • FHSIM-0052 (ARCHITECTURE) — PortJacobianBlockChecker (and two tests) cast to ModelStructure instead of using IJacobianSystem::GetTopologyView. Resolved: feature/fix_issues, 2026-10-21 (checker only: IJacobianSystem::GetPortJacobianLinks() and GetSelfPortCouplingLinks(), implemented by JacobianAssembler, which is what GetJacobianSystem() returns; the two tests keep their cast). File: resolved/FHSIM-0052-portjacobianblockchecker-concrete-cast.md
  • FHSIM-0053 (ARCHITECTURE) — SolverPlan LinearSolverText compares a string to "SPGMR" instead of the enum. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0053-solverplan-lineartext-compares-string.md
  • FHSIM-0054 (BUG) — Legacy SundialsExtra keys jtype, nonlin_type, lin_type give a misleading ERK error. Resolved: feature/fix_issues, 2026-10-21. The three legacy branches are gone; the keys now reach unknown CVODE/ARKODE option: <key>. Test: tests/integrator/options/Sundials_OptionApplier_test.cpp.. File: resolved/FHSIM-0054-sundials-legacy-keys-misleading-error.md
  • FHSIM-0055 (BUG) — GetAdjointSensitivity returns before zeroing adjointInput when the model has no states. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0055-adjoint-sensitivity-leaves-result-unzeroed-without-states.md
  • FHSIM-0056 (BUG) — JAC_COMPRESS_THRESHOLD zeroes small entries in the dense pass only. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0056-compress-threshold-only-in-dense-pass.md
  • FHSIM-0057 (BUG) — The finite difference of a non-analytical object's own block differs between the fill passes. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0057-fill-path-fd-own-block-differs.md
  • FHSIM-0058 (BUG) — Mixed-ownership blocks are handled in the dense pass only; CSR and block-tridiagonal count the analytical link twice. Resolved: 41800a49, 2026-10-21 (owner ruling: fix now). The CSR and block-tridiagonal passes skip an analytical off-diagonal link whose pair a non-analytical link also feeds; the differenced value is the total, as in the dense pass. JacobianFillPathDifferences.MixedOwnershipBlock_PathsAgree is enabled and MixedOwnershipBlock_EveryPassGivesTheTotal replaces the pin. Not covered: a mixed diagonal block, filed as FHSIM-0059.. File: resolved/FHSIM-0058-mixed-ownership-blocks-only-in-dense-pass.md
  • FHSIM-0059 (BUG) — Mixed diagonal block (analytical object, non-analytical self-coupling) is the total in the dense pass only; CSR and block-tridiagonal lose the loop. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0059-mixed-diagonal-block-self-coupling-dense-only.md
  • FHSIM-0060 (BUG) — A non-analytical object's block with an analytical self-coupling counts the loop twice (CSR, block-tridiagonal, ComponentSolver) or drops its own share (dense). Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0060-nonanalytical-block-adds-analytical-self-coupling-again.md
  • FHSIM-0061 (BUG) — The Jacobian checker's shifted-offset copy loses the input file path. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0061-shifted-offset-check-loses-input-path.md
  • FHSIM-0062 (BUG) — TestObserver copies the output row of every integrator step and never reads it. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0062-test-observer-stores-every-step.md
  • FHSIM-0063 (BUG) — CapturingObserver stores every accepted step, not the TOutput cadence. Resolved: feature/fix_issues, 2026-10-21. File: resolved/FHSIM-0063-capturing-observer-stores-every-step.md
  • FHSIM-0064 (ARCHITECTURE) — The dense pass guard numericalPassFollows can never be false. Resolved: feature/readability-jacobian-blocks, 2026-10-22. The numericalPassFollows argument and its test are gone; JacobianBlockPlan.MixedBlockExists_ThenSomeColumnIsDifferenced stays as the proof that the two rules agree.. File: resolved/FHSIM-0064-dense-pass-numerical-guard-always-true.md
  • FHSIM-0065 (BUG) — Forward and adjoint sensitivity read port caches left by an earlier state. Resolved: 70d2a0bc, 2026-10-22. File: resolved/FHSIM-0065-b1-sensitivity-stale-caches.md
  • FHSIM-0066 (BUG) — AcceptedStep reads port values from the last stage, not the accepted state. Resolved: feature/step-size-controller (option 1, owner ruling 2026-10-22), 2026-10-22. File: resolved/FHSIM-0066-accepted-step-stale-ports.md
  • FHSIM-0067 (BUG) — Sparse, block-tridiagonal and component assembly read caches left at a perturbed state. Resolved: bcbe0181, 2026-10-22. File: resolved/FHSIM-0067-b2-assembly-stale-caches.md
  • FHSIM-0068 (BUG) — A NaN or Inf error entry is dropped from the error ratio, so the NaN report never fires. Resolved: feature/step-size-controller (the D10 commit, owner ruling D10), 2026-10-22. File: resolved/FHSIM-0068-error-ratio-drops-nan.md
  • FHSIM-0069 (TEST) — fmu-dll-bridge and fmu-single-thread-work time out under parallel load on Windows. Resolved: 3e5ed8c5 and 0a0888c9, 2026-10-22 (option 2: slow process, not a hang). Every test timeout now comes from fh_test_timeout, with a base of at least 240 s, so CI's scale and the Debug factor apply to all of them. Settled by the Windows Release runs of conan create (ctest --parallel 24, nothing else on the machine): hud-layout, which uses no threads, ran its 27 checks in 0 ms each yet took 16.6 s, 45.6 s and 98.5 s in three runs, and provider-observer timed out at 25 s with every check finished in under 0.3 s. The time is spent outside the code under test. With the new timeouts, both Release configurations pass (272 of 272 and 273 of 273).. File: resolved/FHSIM-0069-fmu-dll-bridge-hangs-under-load.md
  • FHSIM-0071 (BUG) — Windows, libxml2 2.15: a host thread that called the FMU crashes after the host unloads the FMU. Resolved: b87d79f3, 2026-10-22 (option 1, ADR 0012 step b: every libxml2 call of the FMU module runs on the instance's worker, which calls xmlCleanupParser for the module's copy before the last instance's worker is retired). Verified on Windows with libxml2 2.15.4: the FMPy host test passes 3 runs out of 3 and removes every extraction folder; the FMU test suite has no crash. fhsim requires libxml2/[~2.15] on every platform again.. File: resolved/FHSIM-0071-fmu-dll-libxml2-215-host-thread-crash.md
  • FHSIM-0075 (API) — kSimMgrKeyFhVisualization holds an FhVisualization or an FhVisualizationSDL, untyped. Resolved: 5350e7bf, 2026-10-23; on main through the typed shared resources of ADR 0013 (merged into the same release). FhVis, fhVisDll and FhSimUI register the key with FhSimMgr::SetTypedPtr<T> (FhVisualization or FhVisualizationSDL); a SimObject reads it with ISimObjectCreator::GetSharedResource<T>, which gives nullptr for the other host's type and reports it as an error. NFhSim.h lists which host registers which type. Test: VisualizationKey.* (testFhVisSDL, the real types, no display). The probe API this fix first added (FindTypedSharedResource, FhSimMgr::GetTypedPtr) was dropped in the merge with ADR 0013, which covers the same need.. File: resolved/FHSIM-0075-fhvisualization-key-holds-two-unrelated-types.md
  • FHSIM-0076 (BUG) — SetFMUState after Terminate fails: the worker thread is retired. Resolved: the commit that adds this file (P6 F6), 2026-10-24. File: resolved/FHSIM-0076-fmu-setfmustate-after-terminate.md
  • FHSIM-0077 (BUG) — The FMU exporter ignores the result of every XmlDoc::SaveToFile. Resolved: the commit that adds this file (P6 F1), 2026-10-24. File: resolved/FHSIM-0077-fmu-exporter-ignores-savetofile.md
  • FHSIM-0078 (BUG) — FMU exporter: resource copy failures do not fail the export. Resolved: the commit that adds this file (P6 F2), 2026-10-24. File: resolved/FHSIM-0078-fmu-exporter-resource-copy-failures.md
  • FHSIM-0079 (BUG) — PatchZipUnixOS rewrites the finished archive with no error check. Resolved: the commit that adds this file (P6 F3), 2026-10-24. File: resolved/FHSIM-0079-fmu-exporter-zip-patch-unchecked.md
  • FHSIM-0080 (BUG) — FhsimSlaveCore constructor leaks the live-instance count when Reset throws. Resolved: the commit that adds this file (P6 F5), 2026-10-24. File: resolved/FHSIM-0080-fmu-ctor-leaks-live-instance-count.md
  • FHSIM-0081 (BUG) — C ABI exports throw on a null object or port name, and GetStates on a null output pointer. Resolved: the commit that adds this file (P6 F10), 2026-10-24. File: resolved/FHSIM-0081-dll-abi-null-names-throw.md
  • FHSIM-0082 (API) — Package consumers cannot include SimulationManagerFactory.h and IStateObserverPlugin.h. Resolved: plugin headers installed in 87982031 (R2), test f8749155, review fix ea296221; RunAndCapture in 05262ed3 (R1), test 30544212, 2026-10-24. File: resolved/FHSIM-0082-install-simulationmanagerfactory-and-observer-plugin-headers.md
  • FHSIM-0083 (BUG) — Sparse, BiCGSTAB and GMRES Newton matrix omits I where the J pattern lists no diagonal. Resolved: P1 (N1) fix commit on feature/fhsim-review-fixes-numerics, 2026-10-24. File: resolved/FHSIM-0083-sparse-newton-matrix-misses-unlisted-diagonal.md
  • FHSIM-0084 (BUG) — The FMU exporter ignores failed writes of the documentation pages and plugins.cfg. Resolved: the commit that adds this file (P6 review fix 1), 2026-10-24. File: resolved/FHSIM-0084-fmu-exporter-unchecked-page-writes.md
  • FHSIM-0090 (BUG) — A fixed-step or Kalman run goes on with a NaN or Inf state. Resolved: feature/fhsim-review-fixes-numerics (P3 fix commit), 2026-10-24. File: resolved/FHSIM-0090-fixed-step-nan-not-checked.md
  • FHSIM-0091 (BUG) — The UKF square root turns a slightly negative LDLT diagonal into NaN sigma points. Resolved: feature/fhsim-review-fixes-numerics (P3 fix commit), 2026-10-24. File: resolved/FHSIM-0091-ukf-sqrt-negative-variance-gives-nan.md
  • FHSIM-0092 (BUG) — A Kalman measurement period that is a whole number of steps is truncated and the run throws. Resolved: feature/fhsim-review-fixes-numerics (P4 fix commit), 2026-10-24. File: resolved/FHSIM-0092-kalman-period-truncated-to-whole-steps.md
  • FHSIM-0093 (BUG) — Some input number reads still accept a prefix or a word. Resolved: InputReader getters throw InputValueError in 78ab24c3 (R3, tests 29b9bbb8, 88b87d67); strict reads in a3b33f6f, 065767da, 67ed534a, eee97cc9, 697f3bde (R4, tests e286a2e8); library exceptions reported by the engine in cd4c0929 and fd068029; <SundialsExtra> overflow/inf kept in 65f6bb3e (R6). The model-library exception after construction is left open as FHSIM-0102, 2026-10-24. File: resolved/FHSIM-0093-lenient-number-reads-remain.md
  • FHSIM-0094 (BUG) — Mistyped numbers, bools, NumCores and diagnostics values read as 0 or false (P2). Resolved: feature/fhsim-review-fixes-numerics, commits 26e5aee0..ff74b108 and the P2 review commits, 2026-10-24. File: resolved/FHSIM-0094-strict-parameter-text.md
  • FHSIM-0095 (BUG) — Variable cycles hang; duplicates, file names, TOutput ranges and stale object data fail silently (P5). Resolved: feature/fhsim-review-fixes-numerics, commits 6ae96e4d..e6d194a7, 2026-10-24. File: resolved/FHSIM-0095-input-files-fail-loudly.md
  • FHSIM-0100 (BUG) — Observer and printer thread lifetime: no destructor stopped observer workers, WriteLog was unsynchronised, a forced-parallel algebraic loop deadlocked. Resolved: commits 3d8f9266..caa8ce69 (P9 and P9 review, lane fmu), 2026-10-24. File: resolved/FHSIM-0100-observer-printer-thread-lifetime.md
  • FHSIM-0101 (TEST) — BatchPool.StopWorkers_JoinsTheThreads is flaky under load. Resolved: e8d2e337, 2026-10-24. File: resolved/FHSIM-0101-batchpool-stopworkers-thread-count-flaky.md
  • FHSIM-0102 (BUG) — An exception whose type lives in a model library can outlive the library. Resolved: 2d5f7f0a..08572881 (fix and tests: 2d5f7f0a, 440f9c96, 08572881; red tests: ceebbcdc, d687bf65), 2026-10-24. File: resolved/FHSIM-0102-model-library-exception-after-construction.md
  • FHSIM-0103 (ARCHITECTURE) — Licenser internals: writer functions live beside main, plus dead code and stale doc. Resolved: 36c5feb3, 2026-10-25. File: resolved/FHSIM-0103-licenser-internals-beside-main.md
  • FHSIM-0104 (TEST) — Licence checks have no test except the DLL-name helper. Resolved: 3b5f4588, 2026-10-25. File: resolved/FHSIM-0104-licence-checks-untested.md
  • FHSIM-0105 (BUG) — The licence allows one instance more than iMaxNum. Resolved: 11b69270, 2026-10-25. File: resolved/FHSIM-0105-licence-allows-one-instance-too-many.md
  • FHSIM-0106 (TEST) — FhSimLicenceManager had no seam for its checks; a short library name threw std::out_of_range. Resolved: 0f56cd9b, 2026-10-25. File: resolved/FHSIM-0106-licence-manager-untested-and-short-name-wraps.md
  • FHSIM-0107 (BUG) — ReadLicenceFromFile trusts every read and the not-found message names no file. Resolved: 02f259cd, 2026-10-25. File: resolved/FHSIM-0107-licence-reader-trusts-every-read.md
  • FHSIM-0109 (BUG) — The licenser writer calls exit(1) with no message and leaves a half-written file. Resolved: 04a40b52, 2026-10-25. File: resolved/FHSIM-0109-licenser-exits-without-message-and-destroys-file.md
  • FHSIM-0110 (BUG) — fhsim_licenser <very long number> throws outside any try. Resolved: 9b11e91b, 2026-10-25. File: resolved/FHSIM-0110-licenser-days-argument-throws-outside-try.md
  • FHSIM-0111 (BUG) — A sign after a binary minus is read as a zero minus (5--3 gives 2). Resolved: feature r2-wrong-numbers, commit "Behaviour change: ExpressionEvaluator folds a run of signs into one (R4-01, FHSIM-0111)", 2026-10-25. File: resolved/FHSIM-0111-expression-sign-run-after-minus.md
  • FHSIM-0112 (BUG) — A <Var> text that starts with a number is exported as that number (FMU export). Resolved: feature r2-wrong-numbers, commit "Behaviour change: FMU export reads a whole number only (R5-01, FHSIM-0112)", 2026-10-25. File: resolved/FHSIM-0112-var-text-with-numeric-prefix.md
  • FHSIM-0114 (BUG) — SetFMUState into a built model keeps the old parameters in the engine. Resolved: feature r2-wrong-numbers, commit "Behaviour change: SetFMUState rebuilds a built model when the snapshot has other parameters (R5-06, FHSIM-0114)", 2026-10-25. File: resolved/FHSIM-0114-set-fmu-state-keeps-old-parameters.md
  • FHSIM-0116 (BUG) — FhSim and FhVis abort when the log file cannot be created. Resolved: 0af9ded3, 2026-10-25 (R6-01). File: resolved/FHSIM-0116-fhexe-bad-log-path-aborts.md
  • FHSIM-0117 (BUG) — Small failure-path faults in the network classes. Resolved: 1a6d649b, 70933007, 2026-10-25 (R3-14). File: resolved/FHSIM-0117-network-protocol-failure-paths.md
  • FHSIM-0118 (BUG) — NetworkStateProvider waits for ever when the publisher stops. Resolved: 70933007, 2026-10-25 (R3-08, 1st-E11; owner ruling r2-D13). File: resolved/FHSIM-0118-network-provider-waits-forever.md
  • FHSIM-0120 (BUG) — A plugin's own exception type outlives the observer plugin. Resolved: bc3f3804, 2026-10-25 (R3-01). File: resolved/FHSIM-0120-plugin-observer-exception-outlives-plugin.md
  • FHSIM-0121 (BUG) — RenderInit and RenderRelease lack the model-library exception guard. Resolved: 25d17d2e, 2026-10-25 (R1-13). File: resolved/FHSIM-0121-render-init-release-unguarded.md
  • FHSIM-0122 (BUG) — The SDL visualization observer leaves a dangling model pointer in the renderer. Resolved: f994ea74, 2026-10-25 (R7-01). File: resolved/FHSIM-0122-sdl-observer-leaves-dangling-model.md
  • FHSIM-0123 (ARCHITECTURE) — FhFmuExport: an empty FH_VISUALIZATION block with a false comment. Resolved: 7a52ffc9, 2026-10-25. File: resolved/FHSIM-0123-fmuexport-empty-vis-block.md
  • FHSIM-0124 (BUG) — A visualization package installs headers that cannot compile against it. Resolved: 68e4f1cb, 2026-10-25. File: resolved/FHSIM-0124-vis-package-installs-uncompilable-headers.md
  • FHSIM-0125 (API) — Installed headers include other headers by a bare name. Resolved: a8b7a8ea, 2026-10-25. File: resolved/FHSIM-0125-installed-headers-bare-includes.md
  • FHSIM-0126 (ARCHITECTURE) — CMake lines that do nothing, and test-only packages found for every configure. Resolved: 42a3ccee, 2026-10-25. File: resolved/FHSIM-0126-cmake-lines-that-do-nothing.md
  • FHSIM-0127 (BUG) — The package config asks for TinyXML, which is no longer a dependency. Resolved: 1ae24928, 2026-10-25. File: resolved/FHSIM-0127-package-config-tinyxml.md
  • FHSIM-0128 (BUG) — The build tree uses a 320x200 ogre.cfg, the package ships 640x480. Resolved: 6f28990b, 2026-10-25. File: resolved/FHSIM-0128-two-ogre-cfg-files.md
  • FHSIM-0129 (SECURITY) — IconFontCppHeaders is downloaded from a moving branch at configure time. Resolved: f1367d70, 2026-10-25. File: resolved/FHSIM-0129-iconfontcppheaders-unpinned.md
  • FHSIM-0130 (TEST) — ExternalLink_test tests a mock, not FhSim code. Resolved: 2edc4243, 2026-10-25. File: resolved/FHSIM-0130-externallink-mock-tests.md
  • FHSIM-0131 (DOCUMENTATION) — FMITestHelper says the FMU is re-initialised before each test. Resolved: 53955439, 2026-10-25. File: resolved/FHSIM-0131-fmitesthelper-stale-comment.md
  • FHSIM-0132 (TEST) — Three hand-registered gtest entries pass when their filter matches no test. Resolved: a8855d73, 2026-10-25. File: resolved/FHSIM-0132-handmade-gtest-entries-can-run-nothing.md
  • FHSIM-0133 (TEST) — GTEST_SKIP turns a broken install or a missing playpen into a pass. Resolved: 151321b0, 68bcb180, 2026-10-25. File: resolved/FHSIM-0133-gtest-skip-hides-broken-install.md
  • FHSIM-0134 (TEST) — InputReader MissingFileHandling accepts a throw and no throw. Resolved: 852c3afd, 2026-10-25. File: resolved/FHSIM-0134-inputreader-missingfile-accepts-anything.md
  • FHSIM-0135 (TEST) — golden-test-count has two type labels. Resolved: 17f2e239, 2026-10-25. File: resolved/FHSIM-0135-golden-test-count-two-type-labels.md
  • FHSIM-0136 (BUG) — conan build -of <scratch> writes bin/, lib/ and compile_commands.json into the checkout. Resolved: 7eba459b, 2026-10-25. File: resolved/FHSIM-0136-editable-helper-writes-into-checkout.md
  • FHSIM-0137 (BUG) — The diagnostic Sidecar attribute reads "no" as a file name. Resolved: 9a428c2f, 2026-10-25 (R3-04). File: resolved/FHSIM-0137-sidecar-no-is-a-file-name.md
  • FHSIM-0138 (BUG) — A diagnostic sidecar or JSON stream that cannot be opened fails without a word. Resolved: 43f2ad2e, 2026-10-25 (R3-05). File: resolved/FHSIM-0138-diagnostic-file-open-failure-silent.md
  • FHSIM-0139 (BUG) — CreateSimulationManagerFromXml drops the input path, so side files are not found. Resolved: b382b9b6, 2026-10-25 (R3-06). File: resolved/FHSIM-0139-factory-from-xml-drops-input-path.md
  • FHSIM-0140 (BUG) — The -o option replaces the file of every FileOutput. Resolved: 157e12b5, 2026-10-25 (R3-07). File: resolved/FHSIM-0140-cli-output-path-overrides-every-fileoutput.md
  • FHSIM-0141 (BUG) — Replay reads a short row, a prefix number and CRLF without a message. Resolved: e301741c, 2026-10-25 (R3-10). File: resolved/FHSIM-0141-replay-csv-read-leniently.md
  • FHSIM-0142 (BUG) — The no-provider message names removed elements and ModelInput errors skip the printer. Resolved: 205e26a4, 2026-10-25 (R3-15). File: resolved/FHSIM-0142-factory-provider-message-and-model-input-errors.md
  • FHSIM-0143 (BUG) — An FMU export accepts a Var named like a built-in parameter. Resolved: 3179158b, 2026-10-25 (R5-10). File: resolved/FHSIM-0143-fmu-var-named-like-builtin.md
  • FHSIM-0144 (BUG) — A second Visualization observer is accepted when no view is attached. Resolved: fdf1810b, 2026-10-25 (R7-14). File: resolved/FHSIM-0144-second-visualization-accepted-headless.md
  • FHSIM-0145 (BUG) — The Jacobian sparsity image log says written whether or not it was. Resolved: 71e842e0, 2026-10-25 (R1-15). File: resolved/FHSIM-0145-jacobian-image-claims-written.md
  • FHSIM-0146 (BUG) — The CLI and the engine read the log level on two scales. Resolved: ec1952d8, 2026-10-25 (R6-15). File: resolved/FHSIM-0146-two-log-level-scales.md
  • FHSIM-0150 (BUG) — A state written in PreOdeFcn has no effect under SUNDIALS. Resolved: c7961de0, 2026-10-25. File: resolved/FHSIM-0150-preodefcn-state-write-ignored-by-sundials.md
  • FHSIM-0151 (BUG) — A singular preconditioner block stops a SUNDIALS run. Resolved: c90bd45c, 2026-10-25. File: resolved/FHSIM-0151-singular-preconditioner-unrecoverable.md
  • FHSIM-0153 (BUG) — Diagnostics port snapshot reads port caches of another evaluation. Resolved: 4b30b2a5, 2026-10-25. File: resolved/FHSIM-0153-evaluateports-no-cache-reset.md
  • FHSIM-0154 (BUG) — SetXCurr does not re-initialise the SUNDIALS solver. Resolved: 9e956577, 2026-10-25. File: resolved/FHSIM-0154-setxcurr-without-reinit.md
  • FHSIM-0160 (BUG) — A model-requested stop (CExit, PrintDuringExec::Exit) ends the run as a failure. Resolved: 3abd4cfe, 2026-10-25. File: resolved/FHSIM-0160-model-exit-reported-as-failure.md
  • FHSIM-0161 (BUG) — ESC in FhVis ends the run as a failure. Resolved: 3abd4cfe, 2026-10-25. File: resolved/FHSIM-0161-esc-in-fhvis-reported-as-failure.md
  • FHSIM-0162 (BUG) — --help exits 1, and a cancelled run exits 1 in FhSim but 0 in FhSimUI. Resolved: 07ef8290, 2026-10-25. File: resolved/FHSIM-0162-help-and-cancel-exit-codes-differ.md
  • FHSIM-0163 (BUG) — A second SetObjectPtr of one name disables the whole DLL simulation context. Resolved: 10c38df7, 2026-10-25. File: resolved/FHSIM-0163-dll-duplicate-setobjectptr-kills-context.md
  • FHSIM-0164 (BUG) — An FMU step whose output the model lacks is reported as a Discard. Resolved: 1e720994, 2026-10-25. File: resolved/FHSIM-0164-fmu-dostep-missing-output-is-discard.md
  • FHSIM-0165 (BUG) — FMU exporter prints errors on standard output; exit codes 12-14 are not documented. Resolved: e6ccc47e, 2026-10-25. File: resolved/FHSIM-0165-fmu-exporter-errors-on-stdout.md
  • FHSIM-0166 (BUG) — SingleThreadWork wakes 100 times a second and retire() waits up to 10 ms. Resolved: dc064db1, 2026-10-25. File: resolved/FHSIM-0166-single-thread-work-polls-and-retire-waits.md
  • FHSIM-0170 (BUG) — The Newton test of BackwardEuler_i is judged against the largest state. Resolved: 3248d23f, 2026-10-25. File: resolved/FHSIM-0170-newton-test-uses-largest-state.md
  • FHSIM-0171 (BUG) — Linear solvers do not report a singular matrix at factorization. Resolved: 1b2f1131, 2026-10-25. File: resolved/FHSIM-0171-linear-solvers-do-not-report-singular-matrix.md
  • FHSIM-0172 (BUG) — A self-connection stops every run of a model that has a Jacobian. Resolved: 09193fa2, 2026-10-25. File: resolved/FHSIM-0172-self-connection-refused-for-every-method.md
  • FHSIM-0173 (DOCUMENTATION) — The SolverPlan comment says SparseLU is not offered as the SPGMR preconditioner, but the factory can install it. Resolved: 2efaf48a, 2026-10-25. File: resolved/FHSIM-0173-solverplan-comment-says-sparselu-not-offered.md
  • FHSIM-0180 (BUG) — StepControl values that are zero or negative are dropped in silence. Resolved: a84d3654, 2026-10-25. File: resolved/FHSIM-0180-stepcontrol-values-dropped.md
  • FHSIM-0181 (BUG) — StepMin above StepMax is not checked for the Engine. Resolved: 181f66b2, 2026-10-25. File: resolved/FHSIM-0181-stepmin-above-stepmax-unchecked.md
  • FHSIM-0182 (BUG) — A Kalman run ignores a state or time written from outside, in silence. Resolved: 827ac3af, 2026-10-25. File: resolved/FHSIM-0182-kalman-ignores-outside-state-change.md
  • FHSIM-0183 (BUG) — An adaptive step with an Inf state and a finite error estimate is accepted. Resolved: c7229217, 2026-10-25. File: resolved/FHSIM-0183-adaptive-step-accepts-inf-state.md
  • FHSIM-0184 (BUG) — A rejected NaN trial step uses up the StatePrintOnNanInf banner. Resolved: ddf5e58c, 2026-10-25. File: resolved/FHSIM-0184-nan-trial-step-uses-up-state-print.md
  • FHSIM-0190 (DOCUMENTATION) — The Doxygen input list skips include/. Resolved: 9efcc2c3, 2026-10-26. File: resolved/FHSIM-0190-r10-01-doxygen-skips-include.md
  • FHSIM-0191 (DOCUMENTATION) — Docs state the opposite of the code on three variable rules. Resolved: 89edec00, 2026-10-26. File: resolved/FHSIM-0191-r10-02-docs-say-variable-rules-opposite.md
  • FHSIM-0192 (DOCUMENTATION) — SharedResourceSetup and RenderRelease have no method section. Resolved: a212e28a, 2026-10-26. File: resolved/FHSIM-0192-r10-03-two-hooks-undocumented.md
  • FHSIM-0193 (DOCUMENTATION) — The strict value rules and InputValueError are not in doc/user. Resolved: 295d86c4, 2026-10-26. File: resolved/FHSIM-0193-r10-04-value-rules-undocumented.md
  • FHSIM-0194 (DOCUMENTATION) — variables.md and simulation.md disagree on which Integrator attributes take variables. Resolved: f37e95f3, 2026-10-26. File: resolved/FHSIM-0194-r10-09-integrator-attributes-substitution.md
  • FHSIM-0195 (DOCUMENTATION) — JacobianRunStatus, JacobianScopeSummary and JacobianRunResult have no Doxygen. Resolved: f37e95f3, 2026-10-26. File: resolved/FHSIM-0195-r10-11-jacobian-result-types-undocumented.md
  • FHSIM-0196 (DOCUMENTATION) — DllWrapper.h
    Parameters
    namesdo not match the parameters. Resolved: 9d8b5412, 2026-10-26. File: resolved/FHSIM-0196-r10-08-dllwrapper-param-names.md
  • FHSIM-0197 (DOCUMENTATION) — troubleshooting.md repeats runtime-errors.md. Resolved: 5ef69130, 2026-10-26. File: resolved/FHSIM-0197-r10-12-troubleshooting-duplicates.md
  • FHSIM-0198 (DOCUMENTATION) — CHANGELOG and README claim Semantic Versioning. Resolved: 75d78374, 2026-10-26. File: resolved/FHSIM-0198-r10-13-semver-text.md
  • FHSIM-0199 (DOCUMENTATION) — The stop-time overshoot rule is not in settled-decisions.md. Resolved: 1fcc2937, 2026-10-26. File: resolved/FHSIM-0199-r2-14-overshoot-rule-not-recorded.md
  • FHSIM-0200 (DOCUMENTATION) — ISimObjectCreator does not say how long the pointer is valid. Resolved: ef00c4b7, 2026-10-26. File: resolved/FHSIM-0200-r4-03-creator-pointer-lifetime.md
  • FHSIM-0201 (DOCUMENTATION) — Garbled InitialConditionSetup comment and SimObject.h ABI text. Resolved: c433dcd9, 2026-10-26. File: resolved/FHSIM-0201-r4-14-initialconditionsetup-comment.md
  • FHSIM-0202 (DOCUMENTATION) — Simulate return value and thread rule undocumented (R6-04, R6-13). Resolved: 972f80ec, 2026-10-26. File: resolved/FHSIM-0202-r6-04-simulate-return-value-and-threads.md
  • FHSIM-0203 (DOCUMENTATION) — architecture.md does not say the engine folders are one module (R1-14, R8-07, R7-07). Resolved: 9e20f026, 2026-10-26. File: resolved/FHSIM-0203-r1-14-engine-folders-are-one-module.md