Skip to content

feat(progress): consume Own.Progress PRG findings in audit reports and ratchets #49

Description

@PhysShell

Context

Companion consumer issue for PhysShell/Own.NET#275 (Own.Progress: consume-or-exit loop-stall detection).

Detector ownership stays in Own.NET. OwnAudit must not grow a second progress analyzer; its role is to normalize, retain, compare, render, and later correlate the resulting findings.

Required integration

When Own.NET starts emitting PRG001, OwnAudit should consume it through the existing canonical finding/SARIF pipeline.

Taxonomy and severity

Add a category such as:

non-progress-loop

Suggested default severity:

  • PRG001 definite reachable non-progress cycle: warning initially;
  • promotion to error only after real-world precision validation or runtime confirmation;
  • unsupported/unknown cases remain analyzer-side skips/advisories and must not appear as definite audit findings.

Evidence preservation

A progress finding is valuable only if its ordered path survives normalization:

loop guard
  -> branch bypassing progress
  -> continue/back-edge
  -> unchanged measure

Preserve:

  • primary anchor at the loop/back-edge diagnostic site;
  • secondary evidence for guard and progress/bypass sites;
  • ordered flow so report/sarif.py emits a clickable SARIF codeFlows trace;
  • a stable, line-independent fingerprint message.

Do not flatten this to “possible infinite loop” and throw away the proof path. That would turn a useful diagnostic into horoscope-grade lint.

Baseline and PR ratchet

PRG001 must participate in the existing baseline-diff workflow:

  • existing accepted findings do not block unrelated work;
  • new findings are visible in PR reports;
  • only new definite findings may be gated after precision acceptance;
  • suppression/triage remains counted and visible rather than silently erased.

Dashboard

Add a small presentation slice:

  • count of definite non-progress loops;
  • grouping by project/module/method;
  • expandable evidence path;
  • triage state (real, uncertain, judged_fp, unjudged) through the existing FP-judge overlay.

No separate dashboard product is needed. Reuse the existing findings dashboard unless evidence rendering demonstrably requires a dedicated component.

Optional later slice: runtime confirmation

Out of scope for first integration, but reserve the taxonomy for a future artifact based on watchdog/stack sampling:

{
  "schema": "ownAudit/progress-runtime/v1",
  "scenario": "import declaration",
  "samples": 50,
  "stuck": [
    {
      "method": "Parser.ReadGoods",
      "path": "Parser.cs",
      "line": 418,
      "samples": 47
    }
  ]
}

Static PRG001 + repeated runtime stack at the same loop may later become:

confirmed-progress-stall

This must be a separate scoped phase after the static detector proves precision. Do not bolt a profiler onto the first PR because humans have already demonstrated that “small follow-up” is how projects acquire a second operating system.

Acceptance contract

  1. A synthetic PRG001 canonical finding survives normalization with rule, category, path, line, resource/measure, evidence, and ordered flow intact.
  2. SARIF emits relatedLocations and codeFlows with no empty artifact URIs.
  3. Stable fingerprint is unaffected by line movement.
  4. Raw and triaged dashboard paths both render the finding.
  5. judged_fp is hidden by default but counted and revealable, matching the existing FP-judge contract.
  6. Baseline diff reports a new PRG001 and ignores an unchanged existing one.
  7. No detector or progress-summary logic is implemented in OwnAudit.
  8. Existing reports remain byte-for-byte unchanged when no PRG finding is present, except for explicitly versioned taxonomy metadata if unavoidable.

Dependency / start condition

Blocked on Own.NET#275 producing a frozen canonical finding shape for PRG001 (including evidence labels and category decision). Documentation/test fixtures may be prepared earlier, but production integration should not guess the producer contract.

Activity

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions