jamesdumay Yes, it is definitely odd. And as I wrote, I also failed to re-produce it with the little example. But not sure why: as the initial visualization (i.e. the first time after the notification of the problem) is correct, is it dependent on time or subsequent builds!?
I have now another example with the bug (of an older – namely from yesterday – build #77): 
When I however break the build now (via replay with bad params => #79) it looks (at least now) fine: 
And here are HAR files (zipped) and Chrome Web Develope Console Tab screenshots for the respective pipeline builds:
- The old build #77 with the bug:
- The new replayed build #79 one without the bug:
Interestingly the console error only shows up in/for/during the good visualization (of build #79)! I therefore guess/hope it is another unrelated problem?
But again the culprit seems to be in the AJAX request that fetches the steps (e.g. https://jenkins2.xortex.com/blue/rest/organizations/jenkins/pipelines/LinkChecker/pipelines/www.....com/runs/77/nodes/20/steps/): where does the underlying information come from? should there be a file somewhere on jenkins server with that information? can there be a weird http proxy server caching problem?
...:/var/lib/jenkins/jobs/LinkChecker/jobs/www.....com/builds/77$ cat workflow/63.xml
<?xml version='1.0' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.support.storage.SimpleXStreamFlowNodeStorage_-Tag plugin="workflow-support@2.15">
<node class="org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode" plugin="workflow-cps@2.40">
<parentIds>
<string>62</string>
</parentIds>
<id>63</id>
<startId>4</startId>
</node>
<actions>
<org.jenkinsci.plugins.workflow.actions.ErrorAction plugin="workflow-api@2.22">
<error class="hudson.AbortException">
<detailMessage>LinkChecker failed: Please check the previous step(s)</detailMessage>
<stackTrace>
<trace>org.jenkinsci.plugins.workflow.steps.ErrorStep$Execution.run(ErrorStep.java:63)</trace>
<trace>org.jenkinsci.plugins.workflow.steps.ErrorStep$Execution.run(ErrorStep.java:50)</trace>
<trace>org.jenkinsci.plugins.workflow.steps.SynchronousStepExecution.start(SynchronousStepExecution.java:38)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:224)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)</trace>
<trace>org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)</trace>
<trace>org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)</trace>
<trace>org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)</trace>
<trace>com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:19)</trace>
<trace>acme.fail(/var/lib/jenkins/jobs/LinkChecker/jobs/www.....com/builds/77/libs/acme-shared-library/vars/acme.groovy:86)</trace>
<trace>com.acme.linkchecker.LinkCheckerStep.execute(file:/var/lib/jenkins/jobs/LinkChecker/jobs/www.....com/builds/77/libs/acme-shared-library/src/com/acme/linkchecker/LinkCheckerStep.groovy:55)</trace>
<trace>org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(jar:file:/var/lib/jenkins/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:129)</trace>
<trace>___cps.transform___(Native Method)</trace>
<trace>com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)</trace>
<trace>sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source)</trace>
<trace>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</trace>
<trace>java.lang.reflect.Method.invoke(Method.java:498)</trace>
<trace>com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:103)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)</trace>
<trace>sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source)</trace>
<trace>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</trace>
<trace>java.lang.reflect.Method.invoke(Method.java:498)</trace>
<trace>com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)</trace>
<trace>com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:60)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)</trace>
<trace>com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)</trace>
<trace>sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source)</trace>
<trace>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)</trace>
<trace>java.lang.reflect.Method.invoke(Method.java:498)</trace>
<trace>com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)</trace>
<trace>com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)</trace>
<trace>com.cloudbees.groovy.cps.Next.step(Next.java:83)</trace>
<trace>com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)</trace>
<trace>com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)</trace>
<trace>org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)</trace>
<trace>org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)</trace>
<trace>com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)</trace>
<trace>org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)</trace>
<trace>org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)</trace>
<trace>java.util.concurrent.FutureTask.run(FutureTask.java:266)</trace>
<trace>hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)</trace>
<trace>jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)</trace>
<trace>java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)</trace>
<trace>java.util.concurrent.FutureTask.run(FutureTask.java:266)</trace>
<trace>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)</trace>
<trace>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)</trace>
<trace>java.lang.Thread.run(Thread.java:748)</trace>
</stackTrace>
<suppressedExceptions class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">
<c class="list"/>
<list reference="../c"/>
</suppressedExceptions>
</error>
</org.jenkinsci.plugins.workflow.actions.ErrorAction>
<org.jenkinsci.plugins.workflow.actions.TimingAction plugin="workflow-api@2.22">
<startTime>1506913971139</startTime>
</org.jenkinsci.plugins.workflow.actions.TimingAction>
<org.jenkinsci.plugins.workflow.actions.ErrorAction plugin="workflow-api@2.22">
<error class="hudson.AbortException" reference="../../org.jenkinsci.plugins.workflow.actions.ErrorAction/error"/>
</org.jenkinsci.plugins.workflow.actions.ErrorAction>
</actions>
Hmm this does seem odd reinholdfuereder. I was unable to reproduce this with the provided Jenkinsfile (thanks btw!).
If you are able to capture this problem again, could you grab a HAR file of the session, reopen this ticket and attach it?