I am unable to reproduce this using 1.7.0 or 1.8.0. For both cases the local activity that throws non-retryable error fails and produces a MarkerRecorded event with the failure.
Actually I take that back. It just does not happen every time. After running it 10 times I was able to get:
13:56:45.271 [Workflow Executor taskQueue="HelloParallelActivityTaskQueue", namespace="default": 1] WARN i.t.internal.worker.WorkflowWorker - Workflow task failure during replying to the server. startedEventId=3, WorkflowId=HelloParallelActivityWorkflow, RunId=790382b4-27c5-4f0c-bbd4-cdc88e699036. If seen continuously the workflow might be stuck.
io.grpc.StatusRuntimeException: INVALID_ARGUMENT: encouter invalid commands sequence: CompleteWorkflowExecution, RecordMarker
followed by:
io.grpc.StatusRuntimeException: INVALID_ARGUMENT: encouter invalid commands sequence: CompleteWorkflowExecution, RecordMarker