Release 2.6.8
Other improvements
Delivery feedback in Disposition and Impact statistics

Delivery (Target Feedback) data is now included in the project statistics. When the project has delivery feedback, the Disposition view (list and dashboard widget) shows Delivery Discarded and Delivered columns after the Import columns; on Migration projects the dashboard widget shows Delivered instead of Imported, and reports "Not Processed in Delivery".
The Impact view (list and dashboard widget) shows a Delivery column group when the project has delivery feedback. The Impact list also has a new Total column group summing Export, Import and Delivery (always shown). Excel exports for both views include the new columns when present.
Projects with no delivery feedback are not affected — the new columns are not shown and existing behavior is unchanged.
Prune obsolete events
Use the new "Prune events" Setup job on the Manage page to remove events from the Project that no longer occur on any of its active tracks.

Choose which event types (User, System) and steps (Export, Import, Delivery) to include. Events you have commented on, or that other events were derived from, are kept.

Useful for example to clean up after system events that no longer occur. The old events still show up in the event list with counts = 0 and a State = Done. Pruning removes them.
Issues fixed
Fixed an issue with refreshing Source Data and Views (ticket: 4640)
Fixed an issue where changing track or clicking the reload button didn’t refresh the list in Source → Data and Source → Views.
Hopp generator tool now returns a non-zero exit code when generation fails
Fixed an issue where the Hopp generator tool exited with code 0 even when engine generation failed, preventing CI pipelines from detecting generator errors. The tool now propagates the child generator's exit code along with any command-line parsing errors, so callers can fail fast when generation fails.
Cancelling a pending job now reliably cancels it (ticket: 4641)
Previously, cancelling a job while it was still pending — queued because the maximum number of concurrent jobs had been reached — did not reliably stop it. When a concurrency slot later became free, the cancelled job would start executing anyway and could display a negative elapsed time. Cancelling a pending job now reliably cancels it and it will not start afterwards.
Source Engine setup fails with "Index ended up with no key columns"
Fixed a defect in the Index Analyzer where index candidates whose column casing differed from the underlying table's columns were silently stripped of all key columns, causing Source Engine setup to fail with "Index ended up with no key columns and cannot be created". The Index Analyzer now matches column names case-insensitively and reports a clear error if a candidate references a column that does not exist on the table.
Fixed EngineGenerator crash due to System.Collections.Immutable version mismatch
Resolved an issue where execution of custom tooling using MSBuild APIs could fail on newer environments (e.g. fresh Windows 11 with Visual Studio 2022) with a System.MissingMethodException originating from Microsoft.Build.Shared.XMakeElements.
The issue was caused by a dependency mismatch between MSBuild and System.Collections.Immutable, where a newer MSBuild version expected APIs not available in older or mismatched assemblies.
Fixed Source Data actions menu error before page load
Fixed an issue where opening the Source Data actions menu too early could show an error: ArgumentNullException: Value cannot be null. (Parameter 'source').
Publish to Portal hangs after large delivery feedback load
Fixed an issue where the Publish to Portal job could time out or run for hours after loading a delivery feedback file containing many unique system event messages.
Event Summary list does not load with many Delivery events
Fixed an issue where the Event Summary list could time out and fail to load when the delivery step was included in the filter on a project with very many delivery system events.
Track load fails when antivirus locks engine libraries
Fixed an issue where starting or restarting a track could fail if an antivirus or security scanner briefly held a lock on one of the engine libraries as it was being loaded. The runtime now retries the load on transient lock errors before reporting a failure.