Skip to content

Batch pre-labeling — unattended model annotation as a background job #425

Description

@JArmandoAnaya

This feature spans the kernel, the job system and the review UI. It is the second of the two
auto-labeling modes, following the ordering decision recorded on the ModelProvider port issue
(#418): interactive first, batch second, and both ship.

Status: placeholder — design deliberately deferred

This issue exists to hold the responsibilities that recorded decisions have already assigned to
the batch mode, so that they live on an issue rather than only in comments scattered across other
threads. The full design session for the feature is intentionally deferred until the interactive
click-to-suggest mode (#424) is in real use, because this design has to absorb what interactive
usage measures: the on-domain suggestion acceptance rate, real confidence distributions — the
data point contributed by the work surfacing provenance and confidence in the review loop
(#417) — and the NMS and threshold behaviour from the measurement spike recorded on #418.

Responsibilities already settled (do not re-litigate here)

  1. Entry state is review_pending. The decision recorded on the interactive auto-labeling
    issue (Interactive auto-labeling — click-to-suggest in the editor canvas #424) sets the entry state by who exercised the judgment. Unattended prediction is a
    silent write, so batch pseudo-labels enter at review_pending. The constraint preserved from
    the AI-assist substrate issue (exercise the AI-assist substrate — ModelProvider pre-annotation, review loop in the UI, importers #81) — "predictions are written into review_pending, never
    silently annotated" — applies here as written.
  2. This issue owns the kernel-side entry path. The annotation write gate admits writes at
    {unannotated, annotated}, so batch entry to review_pending requires its own sanctioned
    kernel path. Designing that path, without weakening the existing gate, is this issue's central
    kernel task.
  3. Runs through a user-configured model connection (Inference section — user-configured model connections #421), via the ModelProvider port
    (ModelProvider: declare the kernel port for autolabeling — local and cloud adapters both ordinary #418), as a background job on the existing job infrastructure. Nothing is bundled, and
    nothing is downloaded at install time.
  4. Raw model output gets cross-box NMS before entering, which is a finding from the
    measurement spike recorded on ModelProvider: declare the kernel port for autolabeling — local and cloud adapters both ordinary #418.
  5. Provenance is provenance: model plus model_ref plus confidence — the same domain
    spelling that Model-produced annotations: provenance and confidence surfaced in the review loop #417 and Interactive auto-labeling — click-to-suggest in the editor canvas #424 use.

Open for the future design session (not now)

The teacher model default and prompting strategy; per-class thresholds; review-queue UX at
volume, meaning bulk accept and reject and confidence-sorted ordering, which connects directly to
#417; job scoping across batch, project and filter; and the interaction with the interactive tool
as the correction instrument.

Non-goals

  • Anything that accelerates this issue's own schedule: nothing blocks on it while the interactive
    mode goes first.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendvisionset Python distribution — kernel, server, cli, mcp, formatsenhancementNew feature or requestfrontendannotator / ui-core / app packageskernelvisionset.kernel — domain, ports, adapters, services

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions