|
FhSim
3.1.0
Marine systems simulation
|
Findings from code review that await an owner decision or an implementation. Each row 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. Audit notes that are not issues are in issues/notes.md.
file:line given in the detail file, at HEAD.blocked item, get the owner's answer to "Decision needed" first, then set Status to ready.git mv the file to issues/resolved/, add a | Resolved | <commit>, <date> | row, delete the matching \xrefitem reviewissue "Review issues" "Review issues" \ref fhsim_fishery_issue_<ID> lines from the headers, rerun the script and commit it all together.New issue: 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.
| Tag | Values |
|---|---|
| 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 |
| ID | Class | Severity | Status | Models | Title |
|---|---|---|---|---|---|
| FISH-0002 | BUG | 3 | blocked | Seine/Buoy | SeineConnector Pos and Vel select from opposite sources for the same Connected flag |
| FISH-0004 | BUG | 3 | blocked | Trawl/TrawlDoorAddedFoil | TrawlDoorAddedFoil discards its computed foil force and applies a hard-coded roll moment |
| FISH-0023 | BUG | 3 | blocked | Trawl/CenterWeight | CenterWeight requires an Environment but damps against absolute velocity, ignoring the current |
| FISH-0027 | ARCHITECTURE | 3 | blocked | — | Outports hand out pointers to members that nothing requires the constructor to initialise |
| FISH-0005 | BUG | 2 | blocked | Trawl/TrawlDoorAddedFoil | TrawlDoorAddedFoil FoilEnergyConsumed output is always zero |
| FISH-0006 | BUG | 2 | blocked | Trawl/TrawlDoorAddedFoil | TrawlDoorAddedFoil interpolates the foil polar with the wrong array length |
| FISH-0012 | BUG | 2 | blocked | Seine/Operation | SeineOperation hauls warps at a hard-coded 0.7 m/s while scheduling on WinchHaulSpeed |
| FISH-0018 | BUG | 2 | ready | Trawl/TrawlDoor | Example.xml: a Door output at t=0 depends on process memory layout |
| FISH-0028 | ARCHITECTURE | 2 | blocked | — | Input files require the base SimObject library, which the package does not depend on |
| FISH-0013 | ARCHITECTURE | 1 | blocked | — | Remove the de-registered NetWithAttractor sources and the stale commented-out includes |
| FISH-0014 | KNOWN-LIMITATION | 1 | blocked | Trawl/Crowfoot | Crowfoot header describes a state-based solution the code does not implement, and Example.xml passes three dead attributes |
| FISH-0017 | DOCUMENTATION | 1 | blocked | Seine/Vessel, Seine/Operation, Seine/Buoy, Seine/Cable | No shipped input file exercises any Seine SimObject |
| ID | Class | Title | Resolved | File |
|---|---|---|---|---|
| FISH-0001 | TEST | Revive the test suite: no SimObject has any automated coverage | pending, 2026-09-17 | resolved/FISH-0001-test-suite-has-no-tests.md |
| FISH-0003 | BUG | Crowfoot ExternalVel output is always zero | pending, 2026-09-17 | resolved/FISH-0003-crowfoot-externalvel-always-zero.md |
| FISH-0007 | DOCUMENTATION | TrawlDoorAddedFoil documented input ports do not match the registered ones | 82c8f64, 2026-09-15 | resolved/FISH-0007-trawldooraddedfoil-documented-input-ports.md |
| FISH-0008 | DOCUMENTATION | TrawlDoorAddedFoil header example uses a wrong LibName and a lowercase type string | 82c8f64, 2026-09-15 | resolved/FISH-0008-trawldooraddedfoil-header-example-uses-a-wrong.md |
| FISH-0009 | DOCUMENTATION | examples/input/ValuesDisplay.xml references a stale instance name C | 09db4fa, 2026-09-15 | resolved/FISH-0009-examples-input-valuesdisplay-xml-references.md |
| FISH-0010 | DOCUMENTATION | ValuesDisplay documents NumSignals and a single In port; neither exists | 81fc225, 2026-09-15 | resolved/FISH-0010-valuesdisplay-documents-numsignals-and-a-single.md |
| FISH-0011 | BUG | SeineOperation overwrites MinWarpLength with a literal 20 after reading it | pending, 2026-09-17 | resolved/FISH-0011-seineoperation-minwarplength-overwritten.md |
| FISH-0015 | DOCUMENTATION | ToTrawlDoor's Roll, Pitch and AngleOfAttack output ports are undocumented | 65e4104, 2026-09-15 | resolved/FISH-0015-totrawldoors-roll-pitch-and-angleofattack-output.md |
| FISH-0016 | ARCHITECTURE | Crowfoot and TrawlDoorAddedFoil leak their heap allocations | cca19cd, 2026-09-15 | resolved/FISH-0016-crowfoot-and-trawldooraddedfoil-leak-their-heap.md |
| FISH-0019 | DOCUMENTATION | Every shipped trawl example references Environment/Basic from base, which no 3.x library registers | pending, 2026-09-17 | resolved/FISH-0019-trawl-examples-reference-environment-basic.md |
| FISH-0020 | BUG | ValuesDisplay deletes an uninitialized pointer when RenderInit never runs | 55db44d, 2026-09-15 | resolved/FISH-0020-valuesdisplay-deletes-uninitialized-pointer.md |
| FISH-0021 | BUG | PIDController Out port publishes uninitialised memory before the first accepted step | pending, 2026-09-17 | resolved/FISH-0021-pidcontroller-out-uninitialised-before-first-step.md |
| FISH-0022 | TEST | TrawlDoor angle of attack lands on the reverse-flow +/-pi branch, whose sign is decided by round-off | pending, 2026-09-17 | resolved/FISH-0022-trawldoor-angleofattack-reverse-flow-branch.md |
| FISH-0024 | BUG | SeineOperation reads m_buoyPos and m_lastCall before they are ever written | pending, 2026-09-17 | resolved/FISH-0024-seineoperation-buoypos-read-before-written.md |
| FISH-0025 | BUG | SeineOperation integrates warp length on solver call intervals instead of a state | pending, 2026-09-17 | resolved/FISH-0025-seineoperation-warplength-not-a-state.md |
| FISH-0026 | BUG | Actuator Power port publishes an uninitialised member until the first OdeFcn call | pending, 2026-09-17 | resolved/FISH-0026-actuator-power-uninitialised-until-first-odefcn.md |
| FISH-0029 | BUG | TrawlDoor AngleOfAttack samples the last ODE evaluation, not the observer's state | pending, 2026-09-17 | resolved/FISH-0029-angleofattack-sampled-from-last-odefcn-evaluation.md |