Skip to content

Meta and Confluence

Where these rules come from and what a finding means: Rule Nature.

M rules take other rules' findings as their input. Every other series reads the recipe; this one reads the finding set.

An M finding never lowers a score and never duplicates a line: its input is the finding multiset after the ownership resolver, so two rules that matched the same line have already collapsed to one owner by the time M runs. Its value is the relationship - a practice the recipe claims and a finding that contradicts it, or several weak signals whose combination is the story.

This is a reference page. For how weight and scope work, see Rule System.

Reading an M finding

  • It reads the profile, not the diff: the evidence names the findings that composed, and the recipe text they came from.
  • M001 scores (HIGH); M002 and M003 are weight-0 but escalate the band one step (never add points), gated on the benign-corpus cap M escalation stays below the benign cap.
  • It fires at the layer of its inputs, so it has no static layer.

Rules on this page

Rule Name Severity
M001 Claim Contradicted By Structure HIGH
M002 Weak Signal Across Layers MEDIUM
M003 Composition Not Owned Elsewhere MEDIUM
M004 Expected Co-fire Absent INFO
M005 Licensor Absent On Licensed Shape INFO
M006 Campaign Re-armed Too Often INFO

M001: Claim Contradicted By Structure

  • Target: programmatic (finding set)
  • Severity: HIGH (weight 25)
  • Category: meta

  • Condition: The recipe's declared practice contradicts a structural finding in the same run.

It joins the real claims ledger - the P-series ids the run's declared facts imply (trustsight.scoring.declared_claims) - against the structural findings: checksums declared (P001) while H091 reports the arrays do not cover every source, GPG verification declared (P002) while H024 reports it removed, a source pinned (P005) while H101 reports the pinning lost, a trusted forge declared (P007) while H099 reports the host swapped, a prebuilt deliverable declared (P009) while H066 reports an ELF committed to the repository outside source=().

Only M can see this. The declared-practice ledger is weight 0 and the structural finding is its own claim; "the recipe says one thing and structurally does another" is a relationship between two findings that no single rule reads.

A fourth M family is a tool-health check, never a package finding: cofire_absence reports when a construct that historically co-fires with a rule appears without that rule - a sign the rule broke or was evaded in a known shape. It is consumed by the harness/calibration, not the report, because a hit is about the tool, not the package.

M002: Weak Signal Across Layers

  • Target: programmatic (finding set)
  • Severity: MEDIUM, weight 0 (annotation)
  • Category: meta

  • Condition: Three or more distinct assurance layers fired, none above the alert bar ([thresholds] m002.min_layers, default 3).

An attacker who spreads weak signals across layers stays under any single threshold; the span is only visible from the whole profile. It adds no points but raises the reported band one step: a spread across layers is exactly the case a single-signal threshold cannot see. Measured on the locked benign corpus: 112/3,739 (3.0%).

M003: Composition Not Owned Elsewhere

  • Target: programmatic (finding set)
  • Severity: MEDIUM, weight 0 (annotation)
  • Category: meta

  • Condition: Two or more distinct capability families co-occur while none of the cluster owners (H027, H098, X007) recorded the composition - typically because the owner is disabled.

The composition is never lost. It adds no points but raises the reported band one step. Measured on the locked benign corpus: 316/3,739 (8.5%).

Standing gate: the escalation passes the benign-corpus cap (M escalation stays below the benign cap, MAX_BENIGN_FIRE_RATE) before it ships, the cluster-rate gate the M constitution requires.

M004: Expected Co-fire Absent

  • Target: programmatic (tool health)
  • Severity: INFO, weight 0
  • Category: meta

A construct that historically co-fires with another rule appeared without it. A hit means the tool, not the package, needs attention, so this is never added to a package's finding list: it rides the report's cofire_health channel for the harness and calibration.

M005: Licensor Absent On Licensed Shape

  • Target: programmatic (tool health)
  • Severity: INFO, weight 0
  • Category: meta

A rule declaring escalates_when fired while none of its declared licensors did - the detector travelled without its usual company. Like M004 this is a sensor-health observation, not evidence about the package, so it goes to the cofire_health channel and never scores. See Escalation Licensing.

M006: Campaign Re-armed Too Often

  • Target: programmatic (tool health)
  • Severity: INFO, weight 0
  • Category: meta

A campaign re-armed faster than [alerts] campaign_min_reactivation_observations allows. The window is still refreshed - re-activation is never blocked - but a campaign that re-primes over and over is the instrument churning, not a package misbehaving, so it is surfaced as a tool-health note rather than passed over in silence. Unlike M004 and M005 it is a cycle-level observation: it is raised in the correlation cycle's log, not attached to any package's cofire_health, and it never scores. See Campaign Alert Mode.