# Record
**Author:** @cameron.stream (`did:plc:gfrmhdmjvxn2sjedzboeudef`)

## `knowledge-tinker-curriculum`
**Collection:** `site.standard.document`
**AT URI:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.document/knowledge-tinker-curriculum`

**Title:** Tinker curriculum
**Published:** Sun, 26 Jul 2026 03:56:24 GMT
**Updated:** Sun, 26 Jul 2026 04:17:00 GMT
**Description:** A standalone experiment in cumulative agent training that teaches a raw language model one closed task set at a time, measuring each independently before adding the next.
**Publication:** `at://did:plc:gfrmhdmjvxn2sjedzboeudef/site.standard.publication/3mr4py6clps2f`
**Path:** /tinker-curriculum
**Tags:** knowledge, map, ai, machine-learning, tinker, curriculum-learning, continual-learning

**Content:**
````json
{
  "text": "The Tinker curriculum is a standalone experiment in cumulative agent training. It teaches a raw language model one closed task set at a time, measures each independently against a sealed promotion gate, and does not add another task set until the first one clears its gate. The project is designed so that capability growth cannot silently erase prior behavior: every future task-set addition must preserve and rerun the earlier frozen evaluations.\n\nThe experiment uses [Tinker](https://tinker-docs.thinkingmachines.ai/), a hosted training and sampling service for fine-tuning large language models. The base model is [Qwen3.5-35B-A3B-Base](https://huggingface.co/Qwen/Qwen3.5-35B-A3B-Base), a 35-billion-parameter mixture-of-experts model with approximately 3 billion active parameters per token. Training uses [LoRA](https://arxiv.org/abs/2106.09685) (low-rank adaptation), a parameter-efficient fine-tuning method that trains a small adapter on top of frozen base weights rather than modifying the full model.\n\n## Design principles\n\nThe curriculum follows three rules that distinguish it from open-ended fine-tuning:\n\n1. **One task set at a time.** A task set is a bounded capability family with explicit training, development, and held-out evaluation sets. No later task set is added until the previous one passes its gate.\n2. **Cumulative retention.** A candidate adapter for task set 2 must pass both its own gate and the unchanged task-set-1 gate. Adding a capability is not permission to forget the previous one.\n3. **No private data.** Task set 1 is generated locally from fixed seeds. Task set 2 is original, source-backed paraphrase of public historical material. Neither contains private conversations, repository history, or unpublished personal data.\n\n**Cumulative curriculum lineage.** Each candidate inherits the previously promoted adapter, adds one bounded task family, and must pass both its new gate and every frozen retention gate\\.\n\n| Node | Detail | Stage |\n| --- | --- | --- |\n| Raw base model | Qwen3\\.5\\-35B\\-A3B\\-Base | 1 |\n| Task set 1 | flat JSON transformation | 2 |\n| Promotion gate 1 | development \\+ sealed test | 3 |\n| Promoted adapter | task\\-set\\-1 checkpoint | 4 |\n| Task set 2 \\+ replay | history continuation | 5 |\n| Dual gate | new task \\+ frozen retention | 6 |\n| Experimental adapter | schema\\-2 acceptance receipt | 7 |\n\n| From | To | Relationship |\n| --- | --- | --- |\n| Raw base model | Task set 1 | train |\n| Task set 1 | Promotion gate 1 | evaluate |\n| Promotion gate 1 | Promoted adapter | passes |\n| Promoted adapter | Task set 2 \\+ replay | parent |\n| Task set 2 \\+ replay | Dual gate | evaluate |\n| Dual gate | Experimental adapter | acceptance |\n\n*Source: Tinker curriculum public lineage receipts and promotion contracts\\. Note: Task set 2 is an experimental engineering acceptance result because its prompt contract was repaired after an initial held\\-out failure\\.*\n\nThe orchestration rule can be summarized without depending on one training platform:\n\n```python\ncandidate = train(parent=promoted_adapter, data=current_task + replay(previous_tasks))\n\nif current_gate(candidate) and all(retention_gate(candidate, task) for task in previous_tasks):\n    promote(candidate)\nelse:\n    preserve_receipt_and_reject(candidate)\n```\n\n## Task sets\n\nThe project has two task sets. Each has its own standalone page:\n\n- [Flat JSON transformation](https://cameron.stream/knowledge/tinker-curriculum/task-set-01) teaches the model to emit a single Python function that transforms a flat record according to a natural-language instruction. A narrow AST interpreter evaluates the generated code against hidden cases rather than executing it as arbitrary Python.\n- [Tiananmen history continuation](https://cameron.stream/knowledge/tinker-curriculum/task-set-02) continues from the promoted task-set-1 checkpoint and teaches source-backed question-answering about the 1989 Tiananmen protest movement. It is labeled as an experimental curriculum adapter with iterative benchmark development, not a clean benchmark result.\n\n## Promotion contract\n\nEach task set has a promotion contract that must be satisfied before its held-out split is opened. The contract requires a minimum accuracy threshold, a minimum improvement over the parent model, and—when a prior task set exists—retention of the earlier capability. Task set 1 followed that contract cleanly. Task set 2 later required a prompt-contract repair after its first held-out invocation, so its final result is an exploratory engineering acceptance test rather than a clean sealed evaluation.\n\n## Evidence limits\n\nThe experiment is an engineering specimen, not a research benchmark. Task set 2 was developed iteratively against observed model behavior, its evaluator was revised during the same session as training, and the sampling service produced non-identical outputs across nominally temperature-zero calls. The reported results are engineering acceptance receipts, not pre-registered or statistically stable estimates. These limits are documented in detail on each task-set page.\n\n## Sources\n\n- [Tinker](<https://tinker-docs.thinkingmachines.ai/>)\n- [Qwen3\\.5\\-35B\\-A3B\\-Base on Hugging Face](<https://huggingface.co/Qwen/Qwen3.5-35B-A3B-Base>)\n- [LoRA — Low\\-Rank Adaptation of Large Language Models](<https://arxiv.org/abs/2106.09685>)",
  "$type": "site.standard.content.markdown",
  "version": "1.0"
}
````

---
*Fetched from https://enoki.us-east.host.bsky.network via `com.atproto.repo.getRecord`*