Skip to content

feat(verdict): provenance tier + configurable severity floor - #2

Closed
eric-sabe wants to merge 1 commit into
feat/suppression-baselinefrom
feat/verdict-policy
Closed

feat(verdict): provenance tier + configurable severity floor#2
eric-sabe wants to merge 1 commit into
feat/suppression-baselinefrom
feat/verdict-policy

Conversation

@eric-sabe

Copy link
Copy Markdown
Owner

Stacked on #1 (suppression baseline) — review/merge that first.

What & why

The baseline pins specific reviewed findings. This is the broad dial for the daily marketplace noise, applied after suppression (docs/VERDICT.plan.md):

  • Provenance — a finding whose location matches HONEY_TRUSTED_PATTERNS (default claude-plugins-official) is first-party; the report tags it [1st-party].
  • Severity floor — a finding escalates OVERALL only at/above the floor for its provenance (HONEY_VERDICT_FLOOR / HONEY_VERDICT_FLOOR_TRUSTED). Below-floor findings move to a non-blocking review tier: still printed and counted (OVERALL: … (65 review)), but they don't flip the verdict. A review-only run is CLEAN.

On the real run, HONEY_VERDICT_FLOOR_TRUSTED=critical demotes all 123 first-party skillspector findings to review and lets the 3 real osv CVEs drive the verdict — complementing the per-finding pins.

Safe by default & hard overrides

Floors default to noneeverything blocks, exactly as before (verified: default verdict unchanged). Provenance labeling is on (informational). The floor can never mute:

  • bumblebee (known-compromised catalog) always blocks;
  • a MUTATED pin always blocks (rug-pull tripwire);
  • incomplete / scan_error are never reclassified.

Parity & gates

lib/verdict.sh + win/lib/Verdict.psm1; every classified finding carries _provenance/_blocking, shared by report/daily-cycle on both platforms. shellcheck clean, PSScriptAnalyzer clean, bash↔PowerShell behavior-identical. Docs: VERDICT.plan.md, README (section + 3 config vars), routine-prompt + triage-guide teach the review tier.

🤖 Generated with Claude Code

The baseline pins specific reviewed findings; this is the broad dial for the
daily marketplace noise. Two settings, applied after suppression:

  • Provenance: a finding whose location matches HONEY_TRUSTED_PATTERNS
    (default claude-plugins-official) is first-party; the report tags it
    [1st-party].
  • Severity floor: a finding escalates OVERALL only at/above the floor for its
    provenance (HONEY_VERDICT_FLOOR / HONEY_VERDICT_FLOOR_TRUSTED). Below-floor
    findings move to a non-blocking "review" tier — still printed and counted
    (`OVERALL: … (65 review)`), but they don't flip the verdict.

Every classified finding now carries _provenance and _blocking; report.sh /
daily-cycle.sh (and the PowerShell mirrors) share the same classification, so
they agree. A review-only run is CLEAN.

Safe by default: floors default to `none` (everything blocks, as before) — a
security tool must not silently hide findings out of the box. Overrides that
the floor can never mute: bumblebee always blocks (known-compromised catalog),
and a MUTATED pin always blocks (rug-pull tripwire); incomplete/scan_error are
never reclassified.

Multi-OS parity: lib/verdict.sh + win/lib/Verdict.psm1; report/daily-cycle
updated on both sides. shellcheck clean; PSScriptAnalyzer clean; default verdict
unchanged when no floor is set. Docs: docs/VERDICT.plan.md, README (section +
3 config vars), routine-prompt.md + triage-guide.md (the review tier).

Stacked on feat/suppression-baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eric-sabe
eric-sabe force-pushed the feat/verdict-policy branch from 951b368 to c3d06b4 Compare July 7, 2026 23:40
@eric-sabe
eric-sabe deleted the branch feat/suppression-baseline July 8, 2026 03:11
@eric-sabe eric-sabe closed this Jul 8, 2026
@eric-sabe
eric-sabe deleted the feat/verdict-policy branch July 8, 2026 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant