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:
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:
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
- A synthetic
PRG001 canonical finding survives normalization with rule, category, path, line, resource/measure, evidence, and ordered flow intact.
- SARIF emits
relatedLocations and codeFlows with no empty artifact URIs.
- Stable fingerprint is unaffected by line movement.
- Raw and triaged dashboard paths both render the finding.
judged_fp is hidden by default but counted and revealable, matching the existing FP-judge contract.
- Baseline diff reports a new
PRG001 and ignores an unchanged existing one.
- No detector or progress-summary logic is implemented in OwnAudit.
- 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.
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:
Suggested default severity:
PRG001definite reachable non-progress cycle: warning initially;Evidence preservation
A progress finding is valuable only if its ordered path survives normalization:
Preserve:
flowsoreport/sarif.pyemits a clickable SARIFcodeFlowstrace;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
PRG001must participate in the existing baseline-diff workflow:Dashboard
Add a small presentation slice:
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: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
PRG001canonical finding survives normalization with rule, category, path, line, resource/measure, evidence, and ordered flow intact.relatedLocationsandcodeFlowswith no empty artifact URIs.judged_fpis hidden by default but counted and revealable, matching the existing FP-judge contract.PRG001and ignores an unchanged existing one.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.