Skip to content

REQ 099

sergio velderrain edited this page Nov 9, 2026 · 2 revisions

REQ-099: Return the decision and keep a durable record

Requirement

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.

Rationale

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.

Fit Criterion

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.

Verification

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.

Source

Software-Requirements-Specification

Priority

High

TestID

TEST-101

TestArtifact

scripts/tests/test_approval_gate_record.py and scripts/tests/test_approval_gate_cli.py status and record cases

CodeRef

scripts/approval_gate/record.py, scripts/approval_gate/cli.py, .github/workflows/approval-gate.yml Record job

Status

Planned; offline fixture tests pass, no live proof yet

Clone this wiki locally