Task guide

August 14, 2026 · View on GitHub

The rules are in AGENTS.md; this is the method.

Open the issue first

Every fix has a GitHub issue, appended to the issue index and linked from the PR. The index row names an owning row ID, or names a spec that lists the issue under ## Owed. If you found the bug while doing something else, open its own issue rather than folding a silent fix into an unrelated change.

Ground the premise before fixing

Verify the claimed cause in the source or in a measurement before writing any fix. A plausible story about what is wrong is not a diagnosis, and a fix built on a wrong premise passes review by looking reasonable.

Check the row's spec and git log -S'<symbol>' first. Closed root-causes get re-derived here more often than they get re-found.

Before believing "this isn't my change", reproduce the failure on a clean build of current main. A degraded or partial build drifts gates in ways that look exactly like someone else's bug.

When a process dies without an obvious cause, check whether something else killed it before assuming a leak — an exit code with no matching OOM record usually means an external signal.

Red test first

Write the smallest test that fails for the intended reason and capture the red output. Then make the minimum complete change. A fix without a test that failed before it is not a fix, it is a hope.

Port the upstream test if vLLM covers this behavior.

Fix the cause, not the gate

You may never turn a red gate green by deleting an assertion, widening a scope, or adding a path exemption. If the gate is genuinely wrong, that is its own change with its own spec, red-before evidence, and green-after evidence.

Anchor edits by uniqueness: assert exactly one match before replacing, because near-duplicate functions are common here and a positional replace will silently hit the wrong one.

Before you call it fixed

Run the focused gate, then the full gate. Hand the immutable head to a fresh reviewer for static and mutation review. The operator reruns the gate.

Record what the bug actually was in the row's spec ## Outcome — especially if the obvious explanation turned out to be wrong. That is the part neither the code nor git will tell the next person.