Skip to main content

eval-author-task-create

Propose dataset improvements from Eval Author audit findings, then optionally create one Harbor task from one actionable uncovered tool. Prove the task with Harbor's Oracle, run it repeatedly with the repository's real agent when authorized, and accept it only when measured ATIF closes the selected gap every time. Use when the user asks to suggest dataset changes, fill an eval gap, turn audit uncovered_items into a Harbor task, or add missing tool coverage. Writes proposals, drafts, and measurements only under `.eval-author/`.

Quellinformationen

Repository
NVIDIA-NeMo/nemo-platform
Letzte Quellaktivität
18. September 2026 um 21:34
Erkannte Sprache von SKILL.md
Englisch
Sterne
79
Forks
24

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
2 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
eval-author-task-create
description
Propose dataset improvements from Eval Author audit findings, then optionally create one Harbor task from one actionable uncovered tool. Prove the task with Harbor's Oracle, run it repeatedly with the repository's real agent when authorized, and accept it only when measured ATIF closes the selected gap every time. Use when the user asks to suggest dataset changes, fill an eval gap, turn audit uncovered_items into a Harbor task, or add missing tool coverage. Writes proposals, drafts, and measurements only under `.eval-author/`.
triggers
["create a Harbor task from an audit gap","fill an uncovered eval tool","generate missing eval tasks","close audit coverage gaps","turn uncovered_items into Harbor tasks","propose dataset improvements from audit findings"]
not-for
["eval-author-first-eval (use when the user has no evaluations yet)","eval-author (use for the shared standard and routing)","eval-author-audit (use to create the denominator and coverage report)","eval-author-discover (use to prove an existing suite is runnable)","nemo-evaluator (use to run an existing benchmark without authoring tasks)"]
compatibility
Proposals read local audit artifacts and task evidence without running Harbor. Task creation needs Python 3.11 or later and a Harbor CLI compatible with `harbor task init`. Docker is required for Oracle and Docker-backed real-agent runs. Real-agent runs may require provider credentials and explicit user approval.
maturity
alpha
license
Apache-2.0
user-invocable
true
allowed-tools
Bash, Read, Write, Grep, Glob
metadata
{"author":"NeMo Helix Team <nemo-helix@nvidia.com>"}
# Eval Author: create task Read `eval-author` for the shared evidence standard and boundaries. Read `eval-author-audit` for measurement and aggregation. Start with the proposal step to turn audit evidence into prioritized dataset improvements across tools, capabilities, and failure cases. For proposal-only requests, stop after Step 1. For task-creation requests, continue with an eligible tool gap through the existing execution path: ```text actionable uncovered tool → Harbor-native draft → Oracle reward 1 → repeated real-agent ATIF → target tool covered in every report ``` Create and prove one tool gap at a time. Keep every generated artifact under `.eval-author/`; do not edit existing tasks or customer source. An existing suite without a coverage report belongs in `eval-author-discover` and `eval-author-audit`. A missing report alone is not a first-eval request. ## Script `scripts/task_pipeline.py` has three deterministic commands: | Command | Verdict | |---|---| | `select` | Lists only tool items with `reason: not_covered_by_any_input_report` and emits a deterministic `task_slug` plus artifact paths | | `scaffold` | Calls Harbor's own `harbor task init`, requires matching draft/proposal names for that slug, and installs the supplied instruction | | `verify` | Exits 0 only when the selected tool was uncovered before and covered in two distinct repeated after-reports with distinct ATIF `subject.run_id` values | The script prints one JSON object. Exit code 0 is success; do not replace its verdict with model judgment. ## Step 1: propose dataset improvements Read the aggregate audit report, relevant per-trace `details.json` and capability judgments, and the source traces or verifier results needed to explain the findings. Check existing task instructions, fixtures, and verifiers before claiming a scenario is absent or proposing a duplicate. A capability covered in one run can still fail in another; review observed failures even when the item is absent from `uncovered_items`. Distinguish the basis for each recommendation: | Basis | What it supports | |---|---| | Observed failure | A trace or verifier shows incorrect behavior on an exercised scenario. Preserve the existing failing task as a regression; propose strengthening it only when a specific fixture or verifier change adds value. An agent fix may be the next action without any dataset change. | | Coverage gap in inspected inputs | A measured item is not demonstrated and the inspected tasks or traces lack the intended scenario. Propose a concrete new task or extension; state the inspected scope rather than claiming the entire dataset lacks coverage. | | Unmeasured or insufficient evidence | The method was not selected or is unsupported, judgments are missing or unclear, or the scenario's trigger is unverified. Recommend measurement or inspection first. Ethos-backed scenarios may still be proposed as candidates, with their unmeasured status explicit. | `not_covered_by_any_input_report` alone does not distinguish an absent scenario, an agent failure, or missing judgments. `not_measured_by_any_method` is a measurement limitation, not proof of a dataset deficiency. Failure-case items remain unmeasured in v1; manual trace observations do not change that status. Write recommendations to `.eval-author/proposals/dataset-recommendations.md` as skill-authored analysis; keep the generated coverage JSON unchanged. Rank by expected value and strength of evidence, explaining why the first action comes first. Prefer a short, useful list over one suggestion per uncovered item. For each recommendation, include: - **Change and scenario:** add a task, strengthen a named existing task, retain an existing regression, or gather evidence; describe the concrete request and fixture or failure trigger that makes it useful. - **Expected behavior and verification:** the outcome to check and how a verifier would distinguish correct from incorrect behavior. For failure cases, identify evidence that the trigger actually occurred as well as the expected response. - **Basis and evidence:** the category above, stable audit item names, and task, run, trace-step, judgment, or verifier references supporting the recommendation. Mark proposed fixture details as proposals, not observed facts. - **Next action:** say whether the suggestion is eligible for automatic tool-gap task creation, needs manual task design, or needs more measurement. A written recommendation is not a generated, validated, or accepted Harbor task. Lead the proposal response with the highest-value recommendations and enough scenario and expected-behavior detail to act on them. Follow with supporting coverage counts, measurement limits, and links to the proposals and audit report. Full tool coverage or an unsupported task-generation path must not suppress useful capability or failure-case suggestions. Do not relabel those suggestions as tool gaps to pass the selector. If evidence supports no dataset change, say why and identify any useful measurement or agent-fix action instead of inventing additions. Do not scaffold or run tasks for a proposal-only request. ## Step 2: select one actionable gap ```bash uv run <skill_dir>/scripts/task_pipeline.py select \ --report .eval-author/audit-coverage-report.json ``` Choose one item from `actionable_tools`. Stop task creation when the list is empty, and surface the dataset recommendations from Step 1. An empty selector means no eligible tool gaps, not that there are no useful dataset improvements. Capability and failure-case items are not task-generation inputs in v1, even when capability coverage was measured. Each actionable tool includes a deterministic `task_slug` of the form `cover-<tool-name>` and a `paths` object for the proposal, draft, and measurement directories. Use those paths verbatim for the rest of this flow. Do not invent alternate slugs or filenames. ## Step 3: design the smallest objective task Read the selected item's `description`, `focus`, `needed_tools`, and `evidence_required`. Read one nearby task for domain conventions only. Do not copy its directory: a sibling can carry an obsolete Harbor schema, placeholder verifier, or unrelated solution. Write the instruction only to `paths.proposal` from Step 2. State the observable goal, paths, and constraints without naming the target tool or leaking verifier logic. The task should naturally require the selected tool and no unrelated capability. Decide the verifier before scaffolding. Prefer deterministic shell or pytest. The verifier must grade the task outcome, not the tool call; ATIF measurement proves tool coverage separately. ## Step 4: scaffold with Harbor ```bash uv run <skill_dir>/scripts/task_pipeline.py scaffold \ --report .eval-author/audit-coverage-report.json \ --target <tool-name> \ --out .eval-author/task-drafts/<task-slug> \ --task-name <org>/<task-slug> \ --description "<one-line description>" \ --author "<author>" \ --instruction-file .eval-author/proposals/<task-slug>-instruction.md ``` Use the Step 2 `task_slug` for `<task-slug>` in every path above. `scaffold` rejects mismatched draft, task-name, or proposal filenames. Then complete Harbor's generated files: - `environment/Dockerfile`: task prerequisites, never the solution. - `tests/test.sh`: deterministic reward writer using absolute paths. - `solution/solve.sh`: executable Oracle solution. - `task.toml`: nonempty keywords, metadata, realistic timeouts and resources. - `README.md`: purpose, environment, verifier, layout, and run commands. Do not leave generated placeholders, `pass`, unconditional reward 1, or empty keywords. ## Step 5: prove task correctness with Oracle Run Harbor's Oracle before spending model credentials: ```bash harbor run -p .eval-author/task-drafts/<task-slug> -a oracle ``` Continue only when Harbor reports no exception and reward 1.0. Fix the task, solution, or verifier when Oracle fails; do not weaken the verifier merely to make it pass. ## Step 6: run the real agent twice Running a model spends credentials. Do it only when the user asked for the run or approved it. Use the repository's proven agent configuration, point it at the draft, and set `n_attempts: 2`. Keep the resulting job under `.eval-author/`. Require both trials to: 1. finish without an exception, 2. receive the intended verifier reward, and 3. contain `agent/trajectory.json` accepted as ATIF by the audit `measure.py`. `SUPPORTS_ATIF = true` is not evidence that the emitted JSON matches Harbor's current schema. A `measure.py` parse failure is an agent-adapter defect, not a coverage result. ## Step 7: measure and aggregate each trial Run `eval-author-audit`'s `measure.py` and `report.py` separately for each trial. Keep repeat outputs separate so one successful run cannot hide another: ```bash uv run --with-requirements <audit_skill_dir>/requirements.txt \ <audit_skill_dir>/scripts/audit_spec/measure.py \ --audit .eval-author/audit.md \ --trial-dir <job-dir>/<trial-1> \ --task-id <task-slug> \ --run-id repeat-1 \ --out-dir .eval-author/task-measurements/<task-slug>/repeat-1 uv run --with-requirements <audit_skill_dir>/requirements.txt \ <audit_skill_dir>/scripts/audit_spec/report.py \ --audit .eval-author/audit.md \ --coverage-dir .eval-author/task-measurements/<task-slug>/repeat-1 \ --out .eval-author/task-measurements/<task-slug>/repeat-1-report.json ``` Repeat for trial 2. ## Step 8: accept only deterministic closure ```bash uv run <skill_dir>/scripts/task_pipeline.py verify \ --before .eval-author/audit-coverage-report.json \ --after .eval-author/task-measurements/<task-slug>/repeat-1-report.json \ --after .eval-author/task-measurements/<task-slug>/repeat-2-report.json \ --target <tool-name> ``` Accept the draft only when `accepted` is `true`. Report Oracle reward, both real-agent rewards, both trial paths, and the verify JSON. If either repeat misses the tool, revise the task and rerun both attempts.
Auf GitHub ansehen