Repository navigation
REQ 099
The gate shall return each decision (approved, rejected, expired, or failed) and the reviewer's comment to the requester, and record it as a comment on the adopting repository's tracking issue linking the request ID, digest, run, reviewer, decision, comment, timestamps, and execution outcome.
A rejection must reach the requester as a reason it can act on, and the record must outlive run-log retention (decisions D4 and D5 in VITechnologies/projectbuddy#177). GitHub's reject dialog makes the comment optional.
A rejected fixture returns rejected and the comment to the requester. A rejection without a comment is still a rejection, and its record flags the missing reason. An expired request is recorded as expired. Each record stays retrievable on the tracking issue after the run's logs are deleted.
Planned, TEST-101; not yet performed live. Offline fixture tests map run outcomes to executed, rejected, expired, and failed, flag a rejection without a reason, and read records only from the final line of a comment by the record author. Record survival after log deletion needs a real repository. Live verification waits for Phase 3 of VITechnologies/projectbuddy#179.
Software-Requirements-Specification
High
scripts/tests/test_approval_gate_record.py and scripts/tests/test_approval_gate_cli.py status and record cases
scripts/approval_gate/record.py, scripts/approval_gate/cli.py, .github/workflows/approval-gate.yml Record job
Planned; offline fixture tests pass, no live proof yet