SYSE.53:5.1 - A renderer update meets a shared type
In a constructed ParcelWorks tool, plugin P1 produces measurement objects and renderer R1 consumes those objects in one process. Interface inspection establishes that P1 is qualified with library T1 or T2, while R1 consumes T2. The objects cross the plugin boundary directly, so this interaction requires one supported T type identity. The available releases are T1, T2 and T3.
The engineer first records those consuming facts, rather than merely listing the three package names. The mandatory roots are P1 and R1; the library instance is shared in their object exchange. Intersecting {T1,T2} with {T2} gives T2. The selected P1+R1+T2 configuration supplies exact inputs to the build and environment work. The later trial must still check the rendered result; the finite calculation has not run the tool.
The renderer supplier now offers R2, which requires T3. The user would prefer its new display feature. With P1 still mandatory, the shared intersection is empty. The conflict report names the two interface demands and their common type identity. Reinstalling both T2 and T3 does not repair an exchange that still passes a T2 object to a T3-only consumer.
Three proposed repairs have different consequences:
| Proposal | What must change before it is supported |
|---|---|
| Keep P1+R1+T2. | Confirm that the existing display remains sufficient and its continued use remains permitted. The new feature is deferred. |
| Obtain P2 qualified with T3. | Establish P2’s actual producing behavior and its other requirements, then resolve and exercise the revised whole. A promise of P2 is not a supplied interface. |
| Run the tools separately and exchange a file. | Obtain a file-producing P1 path and an R2 reader for the same qualified schema and units, including errors and loss. Separate processes without that boundary do not supply the original result. |
Suppose the supported file route serializes values in millimetres with schema F2, while R2 reads F2 in millimetres. The engineer records those as new qualified interface premises, assigns separate T instances to the two processes and resolves their independent demands. The consuming task is now file exchange rather than shared in-memory objects. Its reconstruction and trial must include the serialization boundary, and its extra delay may make retaining R1 preferable for another task.
If R2’s accepted units are unknown, this third branch remains conditional even if both local package sets resolve. The next request is the file interpretation needed by the renderer, not another unrestricted dependency search.