Skip to main content

endless-learning

An open-source reproduction of knowledge-graph-driven RL task synthesis, as described in the Kimi K3 technical report (arXiv 2607.24653): a self-evolving concept hierarchy that agents expand through web exploration, from which verifiable RL training tasks are mined, grounded in pinned real-world materials, and gated through an explicit verification contract.

v0 scope: the data engine — graph construction, task mining, verification, and versioned datasets that ship with their reward functions and environments. No RL training loop; trainers own the rollout loop (docs/006).

Two task domains are live:

  • Deep-search QA — questions grounded in a frozen, content-addressed corpus, gated V1–V5 (grounded / unique / non-trivial / solvable / stable), every pass rate stamped with the versioned environment it was measured in.
  • Coding — SWE-bench-shaped instances mined from real repositories (PR mirroring: the commit's own test changes are the oracle), validated by execution against dual states (the oracle must fail on the broken image and pass on the fixed one), flake-screened per state, and offline replayable from pinned container images.

What is measured, and what is not

The design docs record the negative results where they happened; this is the short version, because it is the honest way to read everything above.

claim status
Tasks re-verify offline, with no network and no model calls measured — 25/25 on the search set; coding 8/9: the replay gate caught an oracle whose verdict depended on set ordering, deterministic and correctly failing since PYTHONHASHSEED was pinned (docs/005 M4)
Coding instances discriminate: the oracle fails broken and passes fixed measured — including through Harbor's own harness (oracle → 1, nop → 0)
Onboarding is mechanical measured, and bounded — ~83% on curated mainstream Python, ~0% on the long tail the graph selects
The knowledge graph makes tasks hard false — four independent levers (obfuscation, multi-document grounding, forced computation, method selection) each improved the question's shape and left the mean pass rate at 0.88, with ~70% of tasks solved on every rollout
The knowledge graph is what makes coverage broad and grounding checkable its actual job — and the reason docs/008 moves difficulty into the task format rather than the question

Difficulty measurement is expensive and noisy: per-task pass rate is ±0.24 at 5 rollouts (measured, and exactly binomial). Aggregate over ≥30 tasks; never read a single task's label.

This repo is the engine, not the dataset

Emitted datasets are outputs of running the pipeline, and they are not distributed here. A search-QA record cites content-addressed document hashes; a coding instance names a pinned container image. Without the corpus and the images, neither re-verifies — so shipping the JSONL alone would be shipping a claim with its evidence removed. endless dataset verify re-verifies against your corpus, built by your runs.

Making those artifacts portable — a corpus bundle carrying only the documents a dataset cites, and published images — is the prerequisite for releasing datasets at all.

Datasets compile into three consumer-validated interchange formats (docs/007): a verifiers taskset package, chorus TaskRecord registries, and Harbor task directories — each verified against the consumer's own code, not its documentation.

Quickstart

Build your own graph. Nothing here downloads ours — the package is the engine, and every artifact below is produced by your run, in your workspace.

pip install 'endless-learning[all]'   # or pick extras: [anthropic] [openai] [litellm] [ddg]

mkdir my-graph && cd my-graph
endless init                          # writes endless.toml + .endless/ here
endless kg expand --seeds knowledge --budget-nodes 0   # plant a seed pack, no keys needed
endless kg stats

Three seed packs ship with the package — knowledge, quantitative, earth-systems — and --seeds also takes a path, so your own pack is a TOML file with a seeds list. Seeding is local; growing the graph calls a model and a search backend, so set the credentials your endless.toml roles name and raise the budget:

export ANTHROPIC_API_KEY=...          # or the provider your endless.toml selects
endless kg expand --budget-nodes 50   # agents explore outward from the seeds

From there endless synth run mines search-QA tasks from the graph, and the endless coding commands onboard repositories into pinned images and mine executable instances — see The pipelines. Docker is required for the coding domain only.

Install (development)

pip install -e '.[dev]'      # extras: [anthropic] [openai] [litellm] [mcp] [all]
endless --help

The pipelines

# knowledge graph
endless init                                       # create a workspace here
endless kg expand --seeds knowledge                # grow the concept DAG
endless kg stats

# search-QA synthesis
endless synth run --n 20 --workers 6               # sample → write → gate → tasks.jsonl
endless dataset verify                              # offline re-verification (no network, no models)
endless dataset export-verifiers                    # verifiers-v1 taskset package

# coding domain
endless coding select --n 10                        # KG concepts → candidate repos (star-filtered)
endless coding onboard --repo <url>                 # pinned image + flake-screened test ledger
endless coding mine --since 2024-01-01              # PR-mirror candidates → dual-state validation
endless coding verify-instances                     # replay every instance from its pinned images
endless coding export-chorus                        # chorus TaskRecord registry
endless coding export-harbor                        # Harbor task directories
endless coding publish-images --registry <prefix>   # retag (push only with --push)

Design docs

The design lives in docs/ as a numbered series — start at docs/000-overview.md. Decisions and measured results (including the negative ones) are recorded where they happened.

Doc Topic
000 Vision, scope, architecture, decision log
001 The K3 report, reconciled against the actual PDF
002 Concept DAG: schema, expansion, dedup, storage
003 Pluggable retrieval, caching, content-addressed corpus
004 Sampling, task writing, the V1–V5 gate, difficulty
005 Milestones, acceptance criteria, measured results
006 Environments: action space + reward, versioned specs
007 Task domains, mining sources, interchange adapters
008 Executable tasks outside the coding domain
009 Task families, substrate tags, and what keeps them honest

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

endless_learning-0.0.1.tar.gz (368.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

endless_learning-0.0.1-py3-none-any.whl (203.6 kB view details)

Uploaded Python 3

File details

Details for the file endless_learning-0.0.1.tar.gz.

File metadata

  • Download URL: endless_learning-0.0.1.tar.gz
  • Upload date:
  • Size: 368.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.6

File hashes

Hashes for endless_learning-0.0.1.tar.gz
Algorithm Hash digest
SHA256 4521ba545b67b35d9c6f83cb1be8c2bff823d392d026e6baf83a1673c28dbeea
MD5 94a60c94a04ffe0d1d2b61d25592e209
BLAKE2b-256 586baa41d45e74a04e8a9bb93d1c9725ab83ce7c2de6cf762402dacdad904804

See more details on using hashes here.

File details

Details for the file endless_learning-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for endless_learning-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1b7bfd16d78338890feaf19838cf2297953ba513fe686724d087f9e9d7a5c3a9
MD5 2925e7c7e914fae3c19f36f419edf855
BLAKE2b-256 d3fcff18449c6703185acf9eab5404ed683afa6206cce1e59ab5d13c4f96fbf1

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.2

2 files

This release

0.0.1 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page