You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gh pr diff "$PR" --numstat # binary files show as `-<TAB>-<TAB><path>`
54
55
gh pr view "$PR" --comments
55
56
```
56
57
58
+
**Committed-binary gate (runs at every level).** Scan the `--numstat` output for
59
+
any added/modified file git reports as binary (`-`/`-` in the added/deleted
60
+
columns). This repo builds its native/C libraries from source in CI and does not
61
+
commit build outputs, so any such file is a **Critical** finding regardless of
62
+
review level — report it even at level 0. See the "Committed build artifacts"
63
+
checklist for the rationale and the acceptable-exception (genuine test-input
64
+
fixtures only).
65
+
57
66
## Step 2: PR title and description
58
67
59
68
Check against CLAUDE.md conventions:
@@ -144,7 +153,7 @@ Every agent receives:
144
153
145
154
Launch the following agents in parallel.
146
155
147
-
**Agent 1 — Correctness & bugs:** NULL handling, edge cases, logic errors, off-by-one, operator precedence, error paths. Cross-reference every changed symbol against its callsite inventory and verify the new behavior is correct at each callsite.
156
+
**Agent 1 — Correctness & bugs:** NULL handling, edge cases, logic errors, off-by-one, operator precedence, error paths. Cross-reference every changed symbol against its callsite inventory and verify the new behavior is correct at each callsite. When the diff touches the store-and-forward sender, the async drainer / send loop, primary reconnect/failover, or pool startup (`lazy_connect` / `initial_connect_retry` / `SenderPool` / `QueryClientPool`), also verify the "Store-and-forward & pool startup invariants" checklist — a running drainer that propagates a transport error to the caller, imposes a reconnect time budget, or hard-fails on a transient outage is a Critical (data-loss) finding.
148
157
149
158
**Agent 2 — Concurrency:** Race conditions, shared mutable state, missing volatile, lock ordering, thread-safety of data structures. Use the implicit contract list (lock order, thread-affinity) and check every callsite from 2.5b for violations of the new contract.
150
159
@@ -154,7 +163,7 @@ Launch the following agents in parallel.
154
163
155
164
**Agent 5 — Test coverage:** Coverage gaps, error path tests, NULL tests, boundary conditions, regression tests exist, `assertMemoryLeak()` usage. Cross-reference 2.5d: every cross-context exposure should have a test that exercises the changed symbol from that context. Missing tests for cross-context callsites is a high-priority finding. Test *efficacy* (whether those tests actually exercise the change and could fail) and test-*code* quality are handled by Agents 11-13 — here focus only on whether coverage exists for every new or changed path.
156
165
157
-
**Agent 6 — Code quality & standards:** Code smell, member ordering, naming conventions, modern Java features, dead code, third-party dependencies.
166
+
**Agent 6 — Code quality & standards:** Code smell, member ordering, naming conventions, modern Java features, dead code, third-party dependencies. Also scan the diff for any committed compiled binary / build artifact (run `git diff --numstat`/`--stat` and flag files git reports as binary) — the native/C libraries are built from source in CI, so a committed binary is a **Critical** finding (see the "Committed build artifacts" checklist).
158
167
159
168
**Agent 7 — PR metadata & conventions:** Title format, description quality, commit messages, labels, SQL style in tests.
160
169
@@ -278,6 +287,26 @@ Review the diff for:
278
287
- Code smell: overly complex methods, deep nesting, unclear intent, dead code
279
288
- No third-party Java dependencies on data paths
280
289
290
+
### Committed build artifacts
291
+
-**A newly committed compiled binary is always Critical.** This repo builds its
292
+
native/C libraries from source in CI (`rebuild_native_libs.yml`,
293
+
`build_native.yaml`, guarded by `check-glibc-floor.sh`) and does not commit
294
+
build outputs. A binary added or modified in the diff cannot be reviewed,
295
+
audited, or reproduced from source, can smuggle in unaudited or malicious
296
+
code, and bloats the repo history irreversibly — so it blocks the merge.
297
+
- Detect it structurally, not by extension alone: run `git diff --stat` /
298
+
`git diff --numstat` on the PR and flag every added/modified file git reports
299
+
as binary (`numstat` shows `-`/`-` for added/deleted lines; `--stat` shows a
0 commit comments