Pre-flight Checklist
📝 Bug Description
sdd-status can block archive with verify-report.md is not clearly passing even when the verify report has a clear passing verdict and all tests pass.
The false negative happens because the verify-report parser treats the standalone word PENDING as a blocker anywhere in the report, including ordinary compliant prose inside a spec compliance matrix.
In internal/sddstatus/status.go, the relevant behavior appears to be:
var reportPendingPattern = regexp.MustCompile(`(?i)\b(?:TODO|PENDING)\b`)
and reportLineHasBlocker(...) returns true when that pattern appears on any line.
This blocked archive for a report line like:
| Per-interface polling turn sequencing and timeout ownership | Pending apply/update messages drain before final poll | `test_getDataToInterface_owner_turn_orders_versions_tables_pending_then_final_poll` | ✅ COMPLIANT |
That row is explicitly compliant, but the word Pending caused the report to be treated as not clearly passing.
🔄 Steps to Reproduce
- Create an OpenSpec SDD change with all tasks completed.
- Add a
verify-report.md with a passing verdict, for example **Verdict**: **PASS** and ### Verdict / PASS.
- Include a compliant matrix row or test name containing the standalone word
Pending, e.g. Pending apply/update messages drain before final poll.
- Run:
gentle-ai sdd-status <change> --cwd <repo> --json --instructions
✅ Expected Behavior
sdd-status should treat the report as passing when:
- the verdict is PASS;
- no actual blocking findings exist;
- the word
Pending appears only in ordinary descriptive prose or a passing/compliant row.
The parser should only treat pending/TODO markers as blockers in explicit blocker contexts, task status fields, or non-compliant findings.
❌ Actual Behavior
sdd-status reports:
nextRecommended: verify
archive: blocked
blockedReasons: verify-report.md is not clearly passing
Removing or renaming the descriptive word Pending from the passing compliance row makes sdd-status return:
nextRecommended: archive
archive: ready
blockedReasons: []
Gentle AI Version
Observed with gentle-ai 1.37.2 from CLI output.
Operating System
Windows
AI Agent / Client
OpenCode
Shell
bash
📋 Affected Area
CLI (commands, flags)
💡 Logs / Error Output
blockedReasons: ["verify-report.md is not clearly passing."]
Additional Context
This is a parser false positive, not a product verification failure. In the observed case:
- full native test suite passed;
- focused command also passed;
- verify report said PASS;
- no CRITICAL findings remained;
- archive became ready only after replacing
Pending with Queued in report prose and avoiding the test name containing _pending_ in the same row.
Pre-flight Checklist
status:approved📝 Bug Description
sdd-statuscan block archive withverify-report.md is not clearly passingeven when the verify report has a clear passing verdict and all tests pass.The false negative happens because the verify-report parser treats the standalone word
PENDINGas a blocker anywhere in the report, including ordinary compliant prose inside a spec compliance matrix.In
internal/sddstatus/status.go, the relevant behavior appears to be:and
reportLineHasBlocker(...)returns true when that pattern appears on any line.This blocked archive for a report line like:
That row is explicitly compliant, but the word
Pendingcaused the report to be treated as not clearly passing.🔄 Steps to Reproduce
verify-report.mdwith a passing verdict, for example**Verdict**: **PASS**and### Verdict/PASS.Pending, e.g.Pending apply/update messages drain before final poll.✅ Expected Behavior
sdd-statusshould treat the report as passing when:Pendingappears only in ordinary descriptive prose or a passing/compliant row.The parser should only treat pending/TODO markers as blockers in explicit blocker contexts, task status fields, or non-compliant findings.
❌ Actual Behavior
sdd-statusreports:Removing or renaming the descriptive word
Pendingfrom the passing compliance row makessdd-statusreturn:Gentle AI Version
Observed with
gentle-ai 1.37.2from CLI output.Operating System
Windows
AI Agent / Client
OpenCode
Shell
bash
📋 Affected Area
CLI (commands, flags)
💡 Logs / Error Output
Additional Context
This is a parser false positive, not a product verification failure. In the observed case:
PendingwithQueuedin report prose and avoiding the test name containing_pending_in the same row.