Files
Open_Ultra_SAST/benchmarks/pairs/agent-vfc
Marius CiepluchandClaude Opus 5 c2d9c4ad01 feat(learning-harness): absence rows travel with their registration
Eight of the ten vendored access-control rows had no named handler at all,
so every one of them would have scored `missing_context` forever rather
than as a detector miss. After the re-harvest nine are named and the tenth
states its reason.

The handler-context mode now carries the class its framework registers,
multi-line decorators, and commented-out guards -- `#@token_required`
above a ThreatByte handler is the entire bug. Where the registration lives
in another document (connexion's `operationId`, an express router), a
recipe names `context = [...]`, the harvester writes that stanza per side,
and the pair materializes both files at their repository-relative paths so
the entry-point mapper sees the layout the project has. `harvest_recipe`
fetches every blob before the first write and the driver takes `--report`,
so a failed fetch leaves a reviewed excerpt exactly as it was.

Two defects the re-harvest exposed: `.mjs` was not a known suffix, so the
one pair vendored as an ES module had no file target at all; and
`_python_route_access` matched auth words inside decorator prose, reading
`@ns.doc(description='... without proper authorization checks')` as a
guard. Recorded in the hygiene artifact: nine of the ten duplicate groups
sit on both sides of the split, which the repository-level split cannot
see.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Claude-Session: https://claude.ai/code/session_01T7XD7x5KonMdmGRkp63EQG
2026-09-06 12:39:55 +02:00
..

agent-vfc slice

Security-fix commits carrying an AI coding agent co-author trailer or generation marker (Claude Code, Codex, Cursor, Copilot, Devin), in JavaScript, TypeScript, or Python. provenance = "agent". Only repositories with a stated license are vendored; fixes in unlicensed repositories are vendored = false pointer rows (build_recipes.py --from ... --pointers, function label derived from the cached excerpt) scored by ousast pairs --slice agent-vfc --pointers.

Review checklist (Req 5.3)

A recipe with reviewer = "pending" loads at review_tier = "title": scored and reported by pairs; the improve loop's profile gate uses only seeded and reviewed pairs (Req 9.3, task 8.2). Setting reviewer to your name promotes it to reviewed. Before doing so:

  1. The parent excerpt really contains the vulnerability the title claims (not a refactor).
  2. One mechanism from benchmarks/pairs/mechanisms.toml explains it; adjust mechanism and cwe.
  3. The fixed excerpt removes it and the change is inside the vendored function.
  4. No secret, token, or personal data is in either excerpt (run the redaction check).
  5. The license header is present and matches the repository license.

Rebuild: python benchmarks/pairs/agent-vfc/build_recipes.py --search /tmp/agents.jsonl then --from /tmp/agents.jsonl, harvest.py --slice agent-vfc --all --fetch, catalog_gen.py --slice agent-vfc.