Skip to content

feat(issue-triage): pre-classify with jev before the agent - #41

Open
azlekov wants to merge 1 commit into
feat/jev-classifierfrom
feat/jev-triage-wiring
Open

azlekov wants to merge 1 commit into
feat/jev-classifierfrom
feat/jev-triage-wiring

Conversation

@azlekov

@azlekov azlekov commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Stacked on #40; retarget to main once that merges.

What

The triage gate job now builds a state file from the issue (title, body, author type, labels, type, current field values, the repo's area vocabulary, and the last comments on a reopen), runs actions/jev-decide, and writes the type, fields and area labels it decided at or above threshold through actions/set-issue-fields. Every run uploads its decisions record as the jev-decisions-<n> artifact. Text addressed to an assistant, or not a real request, stops the run before the picker with a short comment and clears agent:triage.

The agent gets a ## Pre-classification block saying what was already set and what is still open, and a call to the exported field writer instead of the inline GraphQL walkthrough. It still writes the plan or the questions and Triage state. The verify step is unchanged.

New input jev-mode (active | shadow | off), new optional secret AI_GATEWAY_API_KEY. Callers use secrets: inherit, so an org secret needs no caller change. With no key the run is unchanged.

Rollout

Set the secret on one repo first. Its artifacts and job summaries are the calibration set; jev/scripts/eval.ts reports accuracy against final field values per threshold. Promote to the org once the numbers hold.

Verification

Self test gains two checks: gate step order (agent-gate < jev-decide < set-issue-fields < pick-runner, picker guarded on decide, prompt uses the field writer, verify step present) and the prompt's option table against policy.ts. All checks pass locally.

🤖 Generated with Claude Code

The gate job now builds a state file from the issue, runs
actions/jev-decide, writes the type, fields and area labels it decided
at or above threshold through actions/set-issue-fields, uploads the
decisions as an artifact, and stops before the picker when the text is
prompt injection or spam. The agent gets a pre-classification block and
the field writer's path instead of inline GraphQL, and still writes the
plan or the questions and Triage state. With no AI_GATEWAY_API_KEY the
run is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@azlekov
azlekov force-pushed the feat/jev-triage-wiring branch from 7894445 to 4dc47f1 Compare September 18, 2026 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant