core.setFailed does not exit

I’ve created this action GitHub - JJ/grading-pr-info-gh-action: Extrae información del diff en un pull request para poder ejecutar tests sobre el repo correspondiente. using node. The first part of it is this:

const core = require("@actions/core");
const github = require("@actions/github");
import {
  get_diff,
  get_pull_info,
  set_vars,
  all_good,
  sorry,
} from "./grading.js";

const context = github.context;
const token = process.env.GITHUB_TOKEN;
const octokit = new github.getOctokit(token);
const diff = await get_diff(context, octokit);
const file = diff[0];
if (diff.length != 1) {
  core.setFailed(
    sorry(
      "Debes cambiar exactamente un fichero, hay ❌" +
        diff.length +
        "❌ en el pull request"
    )
  );
} else {
  core.info(
    all_good("Hay solo un fichero 📁" + file.from + "📁 en el pull request")
  );
}
set_vars(core, "file", file.from);
const fileMatch = /-(\d+)/.exec(file.from);
set_vars(core, "objetivo", fileMatch[1]);
if (file.additions != 1) {
  core.setFailed(
    sorry(
      "Debes cambiar exactamente una línea en el fichero, hay ❌" +
        file.additions +
        "❌ cambiadas en el pull request"
    )
  );
}

I would expect it to exit on failure. However, as seen in this action, it continues to the next, with increasingly erroneous messages.

This is what I use to invoke it:

name: "Tests sobre fuentes del repo del estudiante"
on:
  pull_request:
    paths:
      - "proyectos/*.md"

jobs:
  ops-on-pr:
    runs-on: ubuntu-latest
    outputs:
      user: ${{steps.pr_info.outputs.user}}
      repo: ${{steps.pr_info.outputs.repo}}
      objetivo: ${{steps.pr_info.outputs.objetivo}}
    steps:
      - id: pr_info
        name: Comprueba y analiza
        uses: JJ/grading-pr-info-gh-action@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Incidentally, it shows a series of line feeds I can’t really fathom. Any idea/suggestion will be appreciated.