Skip to content

Review the TaskCompendium design and Harbor spike - #9187

Draft
dlwh wants to merge 40 commits into
mainfrom
codex/taskcompendium
Draft

dlwh wants to merge 40 commits into
mainfrom
codex/taskcompendium

Conversation

@dlwh

@dlwh dlwh commented Sep 16, 2026

Copy link
Copy Markdown
Member

TaskCompendium separates task semantics and private verification from submission formatting, environment bindings, and harness selection. This lets agentic and nonagentic data share a representation while preserving multiple compatible lowerings.

Please review the design overview. The specification has the field definitions and extension paths.

This draft includes the implementation spike and Harbor integration. A focused implementation review fixed compatibility, conversation retention, runtime cleanup, and grading failures. Broader code and source-task review is still pending. The review requested here is for the design; training, direct-chat lowering, MCP, browser, and reactive user simulators remain follow-up work.

The published dataset spike contains semantic specifications and Harbor lowerings. The boundary fixes pass 317 safe TaskCompendium tests, 220 affected Marin tests, and changed-file pre-commit. Live Docker validation remains pending.

dlwh added 25 commits September 11, 2026 23:57
Checkpoint the single-step spike with 41 source specifications and 81
Harbor exports. Separate semantic environment requirements, answer
extraction, and private verifier resources so the same task can run with
different submission conventions and compatible execution environments.

Include TaskTrove, GSM8K, and R2E-Gym importers, structured rejections,
reproducible examples, and Harbor adapters. Published examples use local
Docker image IDs; rebuilding images is required on another machine.
Training integration and target-model suitability studies remain deferred.
Task specifications now carry reviewed coverage tags for the bounded 50-task example suite. Rendered tasks retain those labels and add result encoding tags for JSON, XML, and file submission without representing formatting as a competency.

The labels classify difficulty for an approximately 2B-active Snowball model and are included in the schema, Parquet records, and example builders.
Add a Dataset Viewer sampler that pins source revisions and selects two deterministic rows from every non-blend NeMo Gym corpus. The accompanying review contract requires safe standardization or an explicit source-specific rejection or deferral.
Record the two-row review of 29 NeMo Gym task corpora and standardize the code and instruction-following rows whose private verifier contracts can be preserved. Hub-backed imports retain the pinned revision, split, and sampled offset without exposing source verifier data to the model.\n\nAction-prediction rows that depend on private tool results or authentication state stay deferred, alongside sources without a supported verifier or environment contract.
Generalize the NeMo Workplace importer for two pinned Hub rows while retaining private source provenance and the shared seeded provider contract. Export the rows with provider-tool Harbor bindings and update the sweep ledger.\n\nCalendar and SWE rows remain out of scope because their source contracts do not verify all public task requirements or provide a reproducible workspace oracle.
Add eleven pinned answer-only NeMo rows with shared MCQA, symbolic-math, and reference-answer contracts. Public prompts omit source delivery and grading language; source rows, answers, references, and judge policy remain private.

The build exports 44 Chat/NoEnvironment lowerings across plain text, boxed LaTex, JSON, and XML. The NeMo sweep ledger now records 17 accepted rows.
Run representative TaskCompendium packages through Harbor's native Trial lifecycle and select them with the harbor_conformance marker. Update stale test exports to separate semantic bindings from launch configuration.

Malformed provider submissions now record extraction errors. Unexpected verifier failures record infra_error without a reward. The selector covers Docker, ShellSim, final-state, native-action, and multi-step provider cases.
Define the current semantic schema, public rendering, Harbor lowering, and execution-artifact ownership. Describe the Harbor-backed SkyRL path, a later direct-chat generator, and planned MCP, browser, provider, and interactive-environment extensions without presenting them as supported interfaces.
TaskCompendium now serializes TaskSpec as its only semantic record. Harbor
lowerings render model-visible instructions and agent resources directly, retain
result tags in their manifest, and no longer write a task.json projection.

Schema 0.8 removes the public Task records and legacy schemas, simplifies Harbor
tool bindings, and rebuilds the checked-in sample artifacts. No-tool lowerings no
longer create a filesystem input directory.
Document the target binding as the target-owned compatibility contract in a
lowering. It defines the environment, exposed tools, and target setup while
leaving task semantics and rollout policy in their respective layers.
Define sparse semantic coverage labels and a copy-ready labeling prompt. The guide separates TaskSpec semantics from runtime, verification, and lowering result encoding, and calibrates difficulty to Snowball’s roughly 2B active model.
Make the Luna prompt self-contained by including the standard semantic labels and their selection rules.
Apply sparse semantic coverage labels to the 47 POC and six first-wave specifications. The reviewed labels identify meaningful workspace and provider state and repository context while retaining existing label mappings.
Review the static and provider-backed NeMo specifications with the coverage taxonomy, including persistent provider state for Workplace rows.
Link the TaskCompendium documentation to the schema 0.8 Hugging Face publication and its current semantic and lowering counts.
Tell labelers to use dotted domain subtags for recurring functionality, such as javascript.react and calculus.integration, while avoiding one-off prompt-specific labels.
Replace the coverage domain namespace with sparse subject tags, permit dotted recurring subtags, and regenerate the checked-in semantic samples.
Allow artifact and context tags to use normalized MIME types, and migrate the structured-document examples to canonical MIME values.
Store only the most specific subject tag, use dotted-prefix grouping for parent facets, and permit sparse sibling subtags when both are material.
# Conflicts:
#	config/external/MarinSkyRL/uv.lock
#	lib/marin/src/marin/external_dependencies.py
@dlwh dlwh added agent-generated Created by automation/agent design Design doc / 1-pager for review labels Sep 16, 2026
@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

IaC preview

  • cw-rno2a
  • cw-us-east-02a
  • cw-us-east-08a
  • cw-us-west-04a
  • ⚠️ marin
marin
Logged in to runnervmlun5p as runner (gs://marin-iac-state)
Previewing update (marin):
@ previewing update....
  pulumi:pulumi:Stack: (same)
    [urn=urn:pulumi:marin::marin-iac::pulumi:pulumi:Stack::marin-iac-marin]
@ previewing update....
!   ~ gcp:iap/webBackendServiceIamBinding:WebBackendServiceIamBinding: (update)
        [id=projects/hai-gcp-models/iap_web/compute/services/iris-marin-be/roles/iap.httpsResourceAccessor]
        [urn=urn:pulumi:marin::marin-iac::marin:gcp:GcpIam$gcp:iap/webBackendServiceIamBinding:WebBackendServiceIamBinding::iap-backend-service-iris-marin-be-roles-iap-httpsresourceaccessor]
        [provider=urn:pulumi:marin::marin-iac::pulumi:providers:gcp::gcp::8dde97ef-6668-4e99-9612-7f94be24d979]
!     ~ members: [
-         - [18]: "user:[redacted]"
        ]
Resources:
!   ~ 1 to update
    250 unchanged

Run mixed lowerings through the pinned TrajectoryRunner interface with per-task launches. Archive semantic failures with absent rewards and reject numeric batches containing them.

The consumer example reconstructs tokens from messages and tool schemas. Production runner registration and native mini-SWE trace conversion remain follow-up work.
@rjpower

rjpower commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

The rough idea sounds good to me!

  • Where does the task spec come from? Something like the tasktrove conversion - we ingest a dataset and turn it into the task spec?

  • success_policy -- this feels like the property of the grader, but eh

  • difficulty -- probably should be numeric? probably context dependent

  • I don't quite follow how validation works in the new model: is there a modified version of Harbor this runs on?

"""
#!/bin/sh

echo 'Use the TaskCompendium verifier adapter' >&2
exit 1
 """

I kind of assumed there would either be a "lowering" to a column which indicates the grader but didn't see it in a cursory search.

  • The lowered version has a bunch of duplicative .json files, maybe that's inevitable for the harbor compatibility?

re the ontology:

  • Use this standard vocabulary -- I feel we'll want to iterate on this taxonomy before locking it down? it feels ad-hoc as is.

e.g. the competency feels overlapping, like stateful_tool_use is going to apply nearly everywhere?

I might back off from trying to describe in detail the "what" for the ontology today and instead focus on the mechanics to bootstrap from? AFAICT, we want enough latent information + information from a task to be able to express a desired RL data mixture. I think the broad categories you're calling out are valid there (train a model about medicine), but I'm not convinced by the more detailed taxonomy - competency is blurring into subject - why medical science reasoning but not physics?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent-generated Created by automation/agent design Design doc / 1-pager for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants