Skip to content

finding classes

GitHub Actions edited this page Jun 1, 2026 · 2 revisions

Integrity Finding Classes

You will learn the five types of integrity findings, what each one means, and how to respond.

Overview

Integrity groups problems into five finding classes. Each class describes a different kind of local inconsistency and implies a different recovery path.

Missing primary output

The committed main output from the last successful publication is gone.

What happened: something deleted or corrupted the canonical feed body in the local store after the daemon published it. This could be accidental filesystem cleanup, a failed migration, or disk corruption.

What to do: the daemon queues a recheck. It re-acquires the upstream source (or re-composes from parents for merges) and reprocesses from scratch.

Missing secondary output

A required public artifact file is gone. This could be a metadata JSON, a comparison file, a retention summary, or an insights payload.

What happened: the primary output still exists, but one or more derived artifacts were lost. This typically happens during manual filesystem operations or partial disk failures.

What to do: the daemon queues a reprocess. It regenerates the missing artifacts from the existing local input without fetching anything upstream.

Stale secondary output

A secondary artifact exists but is older than the last successful publication. The pipeline did not finish updating it.

What happened: a processing run completed the primary output but failed or was interrupted before writing one or more secondaries. The artifact file is from a previous run.

What to do: the daemon queues a reprocess. It rebuilds the stale artifact from current local data.

Malformed secondary output

A structured JSON secondary exists on disk but cannot be parsed or has the wrong structure.

What happened: the file was truncated by a crash, partially overwritten, or generated by an older daemon version with a different schema. It is present as bytes but not usable as data.

Examples:

  • a metadata JSON for an archived feed that still exposes raw download URLs (the schema is wrong for the current feed state)
  • a comparison file that contains explicit zero-overlap rows (zero overlap is represented by absence, so stale common: 0 rows are noise)
  • a critical-infrastructure overlap file generated for an older reference-provider set

What to do: the daemon queues a reprocess to regenerate the file with correct content.

Blocked by merge input

A merge-derived feed cannot complete because a required parent input is unavailable.

What happened: the merge needs usable additive parents (feeds it includes) and all configured subtractive parents (feeds it excludes). If a required body is missing, or if a subtractive parent is disabled, archived, or unmaintained, the merge cannot safely compose its output. Publishing without a subtractive parent would broaden the result unexpectedly.

What to do: the daemon queues a recheck of the blocked parent first. Once the parent has a fresh local body, the merge can reprocess.

Special case: if a merge has no eligible additive parent at all, integrity treats the merge as operationally disabled and does not report subtractive-parent noise.

Getting Started

Installation

Running the Daemon

Configuration

Feed Configuration

Pipeline

Admin UI

Integrity

API Reference

Monitoring

CLI Tools

Troubleshooting

Updating

Catalog Maintenance

Security

Reference

Clone this wiki locally