Commit ea54e3c
authored
Add collaborator permission fallback to response-level integrity functions (#3831)
## Problem
Issue content authored by an org owner (@dsyme) was unexpectedly
filtered by integrity policy in [this workflow
run](https://github.com/githubnext/gh-aw-test/actions/runs/24441119155/job/71406472575).
The agent reported the issue content was "filtered by the integrity
policy" even though the author is an org owner with admin rights.
Related issue: githubnext/gh-aw-test#1904
## Root Cause
PR #2863 added a collaborator permission API fallback to
`resolve_author_integrity` in `tool_rules.rs` (Phase 1 —
`LabelResource`). However, for **read operations**, Phase 2
(coarse-grained check) is skipped, deferring to Phase 5's per-item
labels from `LabelResponse`. The per-item integrity functions —
`issue_integrity`, `pr_integrity`, and `commit_integrity` in
`helpers.rs` — did **not** have the collaborator permission fallback.
For org owners whose `author_association` is reported as `"NONE"`
(because admin access is inherited through org ownership rather than
direct collaboration), the per-item integrity was computed as `none`,
which is below the agent's `min_integrity` threshold, causing the
content to be filtered.
## Fix
- Extract a shared `elevate_via_collaborator_permission` helper that
encapsulates the org-repo check + collaborator permission API fallback
logic
- Apply it in all four integrity-computing call sites:
- `resolve_author_integrity` in `tool_rules.rs` (refactored to use
shared helper)
- `issue_integrity` in `helpers.rs` (new fallback)
- `pr_integrity` in `helpers.rs` (new fallback)
- `commit_integrity` in `helpers.rs` (new fallback)
This ensures consistent integrity computation across both Phase 1
(resource labeling) and Phase 5 (response labeling).
## Testing
- All 291 Rust guard tests pass
- `make agent-finished` passes (format, build, lint, all Go tests)3 files changed
Lines changed: 196 additions & 30 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1291 | 1291 | | |
1292 | 1292 | | |
1293 | 1293 | | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
| 1308 | + | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
| 1316 | + | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
| 1322 | + | |
| 1323 | + | |
| 1324 | + | |
| 1325 | + | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
| 1332 | + | |
| 1333 | + | |
| 1334 | + | |
| 1335 | + | |
| 1336 | + | |
| 1337 | + | |
| 1338 | + | |
| 1339 | + | |
| 1340 | + | |
| 1341 | + | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
| 1358 | + | |
| 1359 | + | |
1294 | 1360 | | |
1295 | 1361 | | |
1296 | 1362 | | |
| |||
1417 | 1483 | | |
1418 | 1484 | | |
1419 | 1485 | | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
1420 | 1496 | | |
1421 | 1497 | | |
1422 | 1498 | | |
| |||
1527 | 1603 | | |
1528 | 1604 | | |
1529 | 1605 | | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
1530 | 1616 | | |
1531 | 1617 | | |
1532 | 1618 | | |
| |||
1579 | 1665 | | |
1580 | 1666 | | |
1581 | 1667 | | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
1582 | 1679 | | |
1583 | 1680 | | |
1584 | 1681 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5053 | 5053 | | |
5054 | 5054 | | |
5055 | 5055 | | |
| 5056 | + | |
| 5057 | + | |
| 5058 | + | |
| 5059 | + | |
| 5060 | + | |
| 5061 | + | |
| 5062 | + | |
| 5063 | + | |
| 5064 | + | |
| 5065 | + | |
| 5066 | + | |
| 5067 | + | |
| 5068 | + | |
| 5069 | + | |
| 5070 | + | |
| 5071 | + | |
| 5072 | + | |
| 5073 | + | |
| 5074 | + | |
| 5075 | + | |
| 5076 | + | |
| 5077 | + | |
| 5078 | + | |
| 5079 | + | |
| 5080 | + | |
| 5081 | + | |
| 5082 | + | |
| 5083 | + | |
| 5084 | + | |
| 5085 | + | |
| 5086 | + | |
| 5087 | + | |
| 5088 | + | |
| 5089 | + | |
| 5090 | + | |
| 5091 | + | |
| 5092 | + | |
| 5093 | + | |
| 5094 | + | |
| 5095 | + | |
| 5096 | + | |
| 5097 | + | |
| 5098 | + | |
| 5099 | + | |
| 5100 | + | |
| 5101 | + | |
| 5102 | + | |
| 5103 | + | |
| 5104 | + | |
| 5105 | + | |
| 5106 | + | |
| 5107 | + | |
| 5108 | + | |
| 5109 | + | |
| 5110 | + | |
| 5111 | + | |
| 5112 | + | |
| 5113 | + | |
| 5114 | + | |
| 5115 | + | |
| 5116 | + | |
| 5117 | + | |
| 5118 | + | |
| 5119 | + | |
| 5120 | + | |
| 5121 | + | |
| 5122 | + | |
| 5123 | + | |
| 5124 | + | |
| 5125 | + | |
| 5126 | + | |
| 5127 | + | |
| 5128 | + | |
| 5129 | + | |
| 5130 | + | |
| 5131 | + | |
| 5132 | + | |
| 5133 | + | |
| 5134 | + | |
| 5135 | + | |
| 5136 | + | |
| 5137 | + | |
| 5138 | + | |
| 5139 | + | |
| 5140 | + | |
| 5141 | + | |
| 5142 | + | |
| 5143 | + | |
| 5144 | + | |
| 5145 | + | |
| 5146 | + | |
| 5147 | + | |
| 5148 | + | |
5056 | 5149 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
100 | 101 | | |
101 | 102 | | |
102 | 103 | | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
132 | 108 | | |
133 | 109 | | |
134 | 110 | | |
| |||
0 commit comments