Blast-Radius Gate FAIL
Deterministic verdict from fixed Orbit graph queries at 4312a13498 — same MR, same answer. The graph decides; prose only explains.
Reading this against the live project? A post-merge run can momentarily report PASS / radius 0: GitLab's Orbit index transiently de-indexes a project right after a merge to main, so the changed-definition query comes back empty. That cold-index reading is exactly what a snapshot-pinned gate is built to survive — the canonical verdict is this report, reproduced byte-for-byte from the committed snapshot and pinned by the evidence SHA below, not whatever the index happens to hold this second.
Evidence SHA cfa80c93af4cfa67ca3ac52c77443bb662081cfc2c3643e85a3409e1c9126f98 — the verdict is pinned to a committed snapshot of the exact graph reads behind it. A post-merge de-indexed replay reproduces the same reads and the same verdict; any drift changes this token.
Summary
| changed definitions | app.db.execute_query |
| blast radius (≤3 hops) | 6 definitions — lower bound: CALLS edges, Python only |
| covered by tests | 2 |
| uncovered impact | 4 (67%) |
| label | blast-radius::medium |
| edge types | CALLS |
Blast radius
changedcovereduncovered impact — every red node is an unguarded path out of the change.
This SVG is laid out from the sorted impact_graph (x = hop column, y = fqn rank) — no force-directed jitter, no timestamps. It is a pure function of the graph SHA, so it is byte-identical to the diagram the CLI and CI produce from the same gate-report.json (evidence SHA cfa80c93af4cfa67ca3ac52c77443bb662081cfc2c3643e85a3409e1c9126f98).
Impacted definitions
| definition | hops from change | tested? |
|---|---|---|
app.models.order.load_orders | 1 | ✓ yes |
app.models.user.load_user | 1 | ✗ no |
app.api.handlers.handle_refund | 2 | ✗ no |
app.services.billing.calculate_total | 2 | ✓ yes |
app.services.billing.charge_user | 2 | ✗ no |
app.api.handlers.handle_checkout | 3 | ✗ no |
How to pass this gate
2 test(s) close all 4 gaps:
- write a test for
app.api.handlers.handle_checkout→ closesapp.api.handlers.handle_checkout,app.models.user.load_user,app.services.billing.charge_user - write a test for
app.api.handlers.handle_refund→ closesapp.api.handlers.handle_refund
Query fingerprints (replayable proof)
| sha256 | rows | nodes | edges |
|---|---|---|---|
41a8283d31b89893 | 2 | 5 | 4 |
e5d85eb3b527728e | 2 | 5 | 4 |
096c5e1ba8ae1415 | 2 | 3 | 2 |
ab833a240d14d6cd | 3 | 5 | 3 |
d85cc105b180264f | 3 | 4 | 3 |
99d11276bcc435b7 | 1 | 4 | 3 |
f141ed521efd5ea2 | 1 | 2 | 1 |
8ec4e1fa0aacd5ee | 1 | 2 | 1 |
c5751cf82838b181 | 2 | 3 | 2 |