Skip to content

Persist tutorial quarantine results in DB + Admin UI view (currently discarded on CI runner) #2585

Description

@jung-thomas

Problem

Tutorials that fail pre-publish validation are quarantined by scripts/validate-tutorials.ts, which renameSyncs the offending .md into .tutorial-cache/quarantine/ and writes errors.json, then exits 0. This directory lives only on the ephemeral GitHub Actions runner for rebuild-content.yml and is discarded when the run ends. Nothing consumes errors.json; there is no alert and no Admin UI surface. The quarantine is effectively write-only garbage.

Consequence: a tutorial can silently drop out of the ACTIVE content snapshot (and 404 on PROD) with no durable record of why. Confirmed live for btp-transport-management-cpi-01-use-case (0 steps after sap-tutorials/Tutorials#24233) and private-link-gcp (0 steps), among others.

Ask

Store quarantine results centrally in the DB and expose them in the Admin UI so they aren't lost.

Acceptance criteria

  • New persistence (e.g. QuarantineEvents entity) capturing, per quarantined slug per build: slug, reason, sourceRepo, contentVersion/manifestVersion, runId/workflowUrl, createdAt.
  • validate-tutorials.ts (or the workflow step) writes these rows to HANA via an authenticated endpoint instead of (or in addition to) the throwaway errors.json.
  • Admin UI view listing current quarantined tutorials with reason, source repo, and last-seen build; sortable/filterable; links to the source file.
  • A quarantined slug that later validates cleanly is cleared/aged-out so the view reflects current state, not history-forever.
  • Reporting: count of quarantined tutorials over time / per repo.

Context / pointers

  • scripts/validate-tutorials.ts — the gate (never exits non-zero; writes errors.json at .tutorial-cache/quarantine/).
  • .github/workflows/rebuild-content.yml — runs npm run validate-tutorials.
  • Carry-forward of unchanged slugs between content versions masks these failures until a full rebuild drops the quarantined slug (see also the "pre-publish validators silently broken, hidden by carry-forward" known failure mode).

Related: #2 (Admin Rebuild loses these errors silently), #3 (PROD serve-time 404s).

Activity

  1. added a commit that references this issue on Oct 4, 2026
  2. added 2 commits that reference this issue on Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions