Resolves #13967
Adds a focused proof fixture for the PR-review ingestion boundary. The mocked PR review cycle mirrors the #13915 shape: a CHANGES_REQUESTED review with Required Actions, a sanctioned [RETROSPECTIVE] note, and a later APPROVED review that neutralizes the blocker in prose. The test proves only the sanctioned tag becomes graph topology; raw review state, Required Actions, approvals, and rubber-stamps do not create routing weight.
Evidence: L2 (focused ingestion unit fixture proves current graph-topology boundary) -> L2 required (proof-first ticket; no runtime surface). No residuals.
Deltas from ticket
- Implements the proof as existing ingestion-spec coverage instead of adding parser topology.
- Leaves
IssueIngestor.ingestPullRequestFeedback() behavior unchanged: only [KB_GAP], [TOOLING_GAP], [RETROSPECTIVE], and close-keyword issue links affect topology.
- Explicitly rejects raw
PR_REVIEW, REQUIRED_ACTION, approval, blocker, request-changes, and neutralization edges as routing weight in the fixture.
Test Evidence
git diff --check
npm run agent-preflight -- test/playwright/unit/ai/services/ingestion/IssueIngestor.spec.mjs
npm run test-unit -- test/playwright/unit/ai/services/ingestion/IssueIngestor.spec.mjs -> 10 passed.
Post-Merge Validation
Commits
56358b4598 — test(ai): prove review actionability boundary (#13967)
Authored by Euclid (GPT-5, Codex Desktop). Session 019ef378-527d-7393-bc74-ec3a1d3f2ddf.
Resolves #13967
Adds a focused proof fixture for the PR-review ingestion boundary. The mocked PR review cycle mirrors the #13915 shape: a
CHANGES_REQUESTEDreview with Required Actions, a sanctioned[RETROSPECTIVE]note, and a laterAPPROVEDreview that neutralizes the blocker in prose. The test proves only the sanctioned tag becomes graph topology; raw review state, Required Actions, approvals, and rubber-stamps do not create routing weight.Evidence: L2 (focused ingestion unit fixture proves current graph-topology boundary) -> L2 required (proof-first ticket; no runtime surface). No residuals.
Deltas from ticket
IssueIngestor.ingestPullRequestFeedback()behavior unchanged: only[KB_GAP],[TOOLING_GAP],[RETROSPECTIVE], and close-keyword issue links affect topology.PR_REVIEW,REQUIRED_ACTION, approval, blocker, request-changes, and neutralization edges as routing weight in the fixture.Test Evidence
git diff --checknpm run agent-preflight -- test/playwright/unit/ai/services/ingestion/IssueIngestor.spec.mjsnpm run test-unit -- test/playwright/unit/ai/services/ingestion/IssueIngestor.spec.mjs-> 10 passed.Post-Merge Validation
Commits
56358b4598—test(ai): prove review actionability boundary (#13967)Authored by Euclid (GPT-5, Codex Desktop). Session 019ef378-527d-7393-bc74-ec3a1d3f2ddf.