test(#551): pin browse-commit parity for MTConnect + MQTT, and record the Sql row-selector gap

Verified against the live mapper: every browsable driver's browse-committed
TagConfig passes the gate the commit now runs, EXCEPT Sql — its branch emits a
WideRow blob with no rowSelector, which SqlTagConfigModel and
SqlEquipmentTagParser both refuse. That tag was never readable; the gate only
moves the failure from the deploy gate to the commit. Reported for its own fix
rather than special-cased here.
This commit is contained in:
Joseph Doherty
2026-08-10 00:19:16 -04:00
parent 05b424788f
commit 1ce6e8b107
@@ -318,9 +318,18 @@ public sealed class RawTagConfigGateTests
} }
/// <summary> /// <summary>
/// Every blob <see cref="RawBrowseCommitMapper.BuildTagConfig"/> emits for a browsable driver must /// Browse-commit goes through <see cref="IRawTreeService.ImportTagsAsync"/>, so every blob
/// survive the gate the commit now passes through — otherwise browse-commit would author rows the /// <see cref="RawBrowseCommitMapper.BuildTagConfig"/> emits must survive the gate — otherwise the
/// import refuses. /// commit would author rows the import refuses.
/// <para>
/// <b><c>Sql</c> is deliberately absent, and that is a FINDING, not an oversight.</b> Its branch
/// emits <c>{"model":"WideRow","table":…,"columnName":…}</c> with no <c>rowSelector</c>, which
/// <c>SqlTagConfigModel.Validate</c> refuses and <c>SqlEquipmentTagParser</c> refuses too — so a
/// browse-committed Sql tag has never been readable, it merely failed later (at the deploy gate,
/// or silently at the driver) instead of at commit. Pinning today's behaviour either way would
/// encode a defect; it is reported for its own fix (the browse session should state a row
/// selector, or Sql should commit through the typed editor).
/// </para>
/// </summary> /// </summary>
/// <param name="driverType">The browsable driver type.</param> /// <param name="driverType">The browsable driver type.</param>
[Theory] [Theory]
@@ -329,6 +338,8 @@ public sealed class RawTagConfigGateTests
[InlineData(DriverTypeNames.AbLegacy)] [InlineData(DriverTypeNames.AbLegacy)]
[InlineData(DriverTypeNames.TwinCAT)] [InlineData(DriverTypeNames.TwinCAT)]
[InlineData(DriverTypeNames.OpcUaClient)] [InlineData(DriverTypeNames.OpcUaClient)]
[InlineData(DriverTypeNames.MTConnect)]
[InlineData(DriverTypeNames.Mqtt)]
[InlineData(DriverTypeNames.Galaxy)] [InlineData(DriverTypeNames.Galaxy)]
public void A_browse_committed_config_passes_the_gate(string driverType) public void A_browse_committed_config_passes_the_gate(string driverType)
{ {