PRD Priority Triage
Last updated: 2026-07-02
This file is the working priority map for every PRD currently on disk.
Active work still starts from:
PROJECT_STATUS.mddocs/NEXT.mddocs/factory/
Use this file only when a factory task needs a PRD-level acceptance checklist.
Current Factory Gaps
These are the real gaps before building the next candidate:
- Target lock — SQL is selected for the first factory POC. The expanded
Qwen3-0.6B live run improved from 0.160 to 0.860 on 50 non-overlapping
heldout rows and was correctly marked
retry-data; the next gate is preference tuning or a public benchmark slice. - Canonical run command/readout —
FactoryRunandFactoryRunFolderdefine the schema/readout andtinygpt factory-runrenders/validates a complete run folder. The next missing piece is wiring real eval/train commands to emit those files automatically. - Live baseline eval — done for expanded SQL POC on Qwen3-0.6B.
- Dataset manifest — expanded manifest exists with 108 train, 50 heldout, 108 preference rows across five SQLite domains.
- First SFT candidate — done for expanded SQL POC; next candidate should use DPO/SimPO on SQL-only and failure-derived preference pairs.
- Before/after report — score delta, regressions, cost, latency, RAM, tok/s, artifact, and decision.
- Specialist package — only if the decision is
ship.
Low-Compute Evidence
Verified on 2026-07-02 without model training, GPU sweeps, sudo, or network installs:
Canonical rerun command:
bash evals/low-compute-prd-sweep.sh
The sweep may populate /tmp/gpt2-tok from Hugging Face for the C4 tokenizer
fixture. Set TINYGPT_FETCH_TOKENIZER_FIXTURE=0 to skip that fetch in offline
environments.
| Area | Evidence |
|---|---|
| Run artifact schema | FactoryRun typed schema added in native-mac/Sources/TinyGPTIO/FactoryRun.swift; direct typecheck passes with swiftc -typecheck. |
| Eval gates / protocol | evals/eval-gate-smoke.sh passes, including pass/fail exits, repeated-pass uncertainty, protocol env, and baseline restamp. |
| Onboarding / run planning | evals/quickstart-smoke.sh passes for chat/tool-call fixture planning and missing-file failure. |
| Trace-to-data loop | evals/traces-to-data-smoke.sh passes for tool-echo filtering, exact dedupe, MinHash thresholding, dry-run, and deferred judge rejection. |
| Factory run folder | factory-run-folder-smoke.sh passes for canonical run-folder write/read/validate/report generation. |
| Router / deferred tools / escalation | router-bakeoff-smoke.sh, b26-deferred-parity-smoke.sh, and escalate-smoke.sh pass. |
| Batched eval runtime | evals/b34-throughput-smoke.sh passes against a local OpenAI-compatible mock, proving bounded-concurrent request submission and speedup reporting without a model server. |
| Pure Swift helper logic | evals/swift-pure-model-smoke.sh passes for B28 composite rewards, B11 WSD schedule math, B12 spike recovery, B15 layer-wise LR factors, and B18 depth-derived hyperparameters without building the MLX package graph. |
| Data quality / mix / compression | quality-filter-smoke.sh, automix-smoke.sh, compress-smoke.sh, and scaledown-smoke.sh pass. |
| Repro / interp / packages | determinism-smoke.sh, interp-replay-smoke.sh, and project-validate-smoke.sh pass. |
| Packaging/export | export-mlx-smoke.sh passes for committed .tinygpt fixture export and synthetic adapter export; Python mlx loader execution skipped when mlx is unavailable. |
| Specialist eval fixtures | eval-sql-smoke.sh, milu-smoke.sh, review-smoke.sh, and reasoning-classifier-smoke.sh pass. |
| SQL factory POC | sql-poc-smoke.sh and sql-poc-expanded-smoke.sh pass, including row-level SQL failure traces and generated preference pairs. |
| Tokenizer/router path | extractor-bpe-smoke.sh passes with the temporary GPT-2 tokenizer fixture prepared by low-compute-prd-sweep.sh. |
| Measurement harness math | bench_energy.py --self-test and bench_decode_thermal.py --self-test pass without sudo or a model server. |
Package-level Swift builds that touch MLX need the full Xcode beta developer
dir because global xcode-select points at Command Line Tools, which do not
include metal. Use:
DEVELOPER_DIR=/Applications/Xcode-27.0.0-Beta.app/Contents/Developer \
swift build --build-system native --product tinygpt
Remaining gates that are not part of the low-compute sweep:
B34now has no-model bounded-concurrency smoke coverage. It still needs real tinygpt-vs-mlx-server/oMLX qualification before claiming the PRD’s>=3xlive eval-runtime gate.C10/B6now have typed run artifacts and a render/validate command. The UI should still wait until real train/eval commands emitruns/<id>/automatically during a live factory run.A1acceptance is intentionally excluded from low-compute checks; it requires a GPU Mac, BFCL checkout, and an existing adapter.
P0 — Build Next
These directly support the first canonical factory run.
| PRD | Priority | Use now for |
|---|---|---|
| A1 first-specialist-tool-caller | P0 | Template for the first target’s train/eval/package loop. Update mentally from “BFCL tool-caller” to “selected factory target”. |
| B33 laptop-finetune-onboarding | P0 | Canonical CLI orchestration. Recast as quickstart/factory-run emitting the run schema, not just onboarding. |
| B32 eval-ci-gate | P0 | Baseline/candidate gate shape and failure exit semantics. |
| B23 agent-eval-protocol | P0 | Repeated passes, fixed budgets, uncertainty, and resource accounting. |
| B31 gallery-and-project-pins | P0 | Project pins, package validation, and artifact identity. Mostly shipped; use the remaining pieces only if packaging blocks the run. |
| B10 quality-classifier | P0 | Data filtering sidecar for target data if quality/noise is a problem. Already has a useful V1. |
| B21 micro-automixer | P0 | Data-mix search before training if the target has multiple data sources. Use dry-run/lightweight mode first. |
P1 — Immediately After First Candidate
These are useful once the first SFT candidate exists or if the first run reveals the matching failure mode.
| PRD | Priority | Trigger |
|---|---|---|
| B28 composite-reward-framework | P1 | Candidate has verifiable failures and needs DPO/RLVR/ReST-style reward integration. |
| self-improving-agents | P1 | First candidate produces traces and the reward is stable enough for a second round. |
| continual-learning-loop | P1 | Factory needs repeated correction -> data -> train cycles. |
| B2-B7 router-family | P1 | Specialist wins narrowly but damages breadth; route instead of forcing one general model. |
| B26 deferred-tools | P1 | Tool catalog size becomes a real eval/runtime bottleneck. |
| B5 cloud-escalate-training | P1 | Candidate must learn when local model should defer/escalate. |
| B34 batched-eval-runtime | P1 | Eval runtime blocks iteration speed. |
| C5 decode-jitter-thermal | P1 | Candidate is good enough that sustained decode/thermal behavior matters. |
| B9 energy-per-token | P1 | Candidate is good enough for power/energy comparison. |
| qlora-large-model-finetune | P1 | SFT on bf16/LoRA plateaus and memory blocks larger-base experiments. |
| C10 train-run-dashboard | P1 | CLI run schema exists and needs a visual run reader. |
| B6 mac-app-demo | P1 | CLI factory loop proves improvement; then build the minimal Factory Run Center. |
P2 — Later Factory Support
Useful, but not needed before the first measured factory proof.
| PRD | Priority | Why later |
|---|---|---|
| B1 second-specialist-shell-or-sql | P2 | Only after the first target proves the loop. |
| B8 multilingual-specialist | P2 | Needs target-specific data/eval and should not compete with first proof. |
| B25 scaledown-specialist | P2 | Good specialist candidate, but only if selected as the target. |
| E6 eval-scaledown | P2 | Relevant only for B25/context-compression target. |
| B11 wsd-schedule | P2 | Training-quality polish unless first candidate shows LR schedule issues. |
| B12 loss-spike-recovery | P2 | Use when real training has instability, not before. |
| B15 layerwise-lr-decay-sft | P2 | Tune after baseline SFT. |
| B18 nanochat-depth-knob | P2 | Useful for from-scratch/pretrain ergonomics, not the current adapter loop. |
| C4 tool-extractor-bpe | P2 | Relevant if mini-router/tool extraction becomes the selected path. |
| C9 determinism-harness | P2 | Keep reproducibility constraints, but bit-exact replay is not achievable on current MLX/Metal. |
| B14 speculative-decoding | P2 | Runtime speed after quality is proven. |
| B16 m5-na-prefill-bench | P2 | Hardware measurement after a candidate matters. |
| B13 interp-on-checkpoints | P2 | Debugging/learning lane, not factory proof. |
| B17 saelens-interop | P2 | Useful for analysis export; not active. |
| B19 group-sae | P2 | Interpretability cost reduction; not active. |
| capability-retention | P2 | Important evaluation concept, but implement through the selected target’s regression suite first. |
| factory-planner-v7-tools-in-prompt | P2 | Use only if selected target is planner/tool-schema prompt work. |
| pace-task-loop-v1 | P2 | Pace app integration is separate from TinyGPT factory proof. |
P3 — Parked Research
Keep these for learning/future expansion. Do not open during the factory proof.
| PRD | Priority | Park reason |
|---|---|---|
| 5.1 reasoning-on-22M | P3 | Tier 5 research; not current factory proof. |
| 5.2 testtime-compute-scaling | P3 | Tier 5 research. |
| 5.3 vision-language-toy | P3 | VLM/toy research. |
| 5.4 diffusion-lm-micro | P3 | Diffusion LM research. |
| 5.6 tts-toy | P3 | Audio/TTS research. |
| 5.7 explainer-video-model | P3 | Far-future multimodal/product research. |
| factory-vision-m4-impl-plan | P3 | VLM porting parked. |
| factory-vision-specialist | P3 | VLM specialist parked. |
| vlm-ab-uivenus-vs-qwen3vl | P3 | VLM decision parked. |
| game-rl-environment-poc | P3 | RL environment research. |
| local-model-arena-selfplay | P3 | Self-play research. |
| gepa-prompt-evolution | P3 | Prompt-evolution research; not factory proof. |
| B35 local-agent-vertical-poc | P3 | Coding-agent product wedge is not the current TinyGPT center. |
| GPU-RESEARCH-BACKLOG | P3 | Hardware-heavy backlog; use only after target proof. |
Archive Candidates
These should not be selected for new work. Keep the files for history unless a future cleanup physically moves them into an archive directory and updates links.
| PRD | Archive reason |
|---|---|
| C3 dora-ondisk-format | Shipped/closed. |
| quantized-inference-swift | Shipped/closed. |
| multi-turn-agentic-eval | Shipped as eval infrastructure. |
| pace-planner-v11-training-data | Data PRD shipped; later gate chose not to ship that planner. |
| pace-planner-v11-ship-gate | Decision/gate doc honored; no build work. |
| specialist-pace-planner | Track closed; pivoted to stock 4B/general planner lock. |
| factory-completeness-tracker | Tracking document; primitives mostly hold up in code. |
| factory-vision-m4-architecture-decision | Decision made; downstream VLM work parked. |
| tinygpt-product-thesis | Historical positioning; superseded by factory-first cleanup. |
| macos26-int8-ane-handoff-port | Negative result; parked/closed. |
| 5.5 sparse-moe-kernels | Blocked upstream; design note only. |
Archive Policy
Do not move files during active build work. Soft-archive first by listing them above.
Physically move a PRD only when:
- no active doc links depend on its current path, or links are updated in the same change;
- it is shipped, superseded, negative-result closed, or upstream-blocked;
docs/prds/README.mdand this file stay in sync.