Documentation
Build it, run it, read it
A guide to the baby prototype in the Transient repository. The repository's own markdown files are the source of truth and move faster than this page; where they disagree, trust them.
Quick start
You need a stable Rust toolchain (edition 2021). There are no other dependencies, and no network is needed to build.
git clone https://github.com/DawsMacs/Transient.git
cd Transient
cargo build --release --offline
cargo test --release --offline # 92 tests, about 13 s
./target/release/baby school # teach 13 units, print how each was learned and the scorecard
./target/release/baby ask "how far apart are two and nine"
Check your build
The two-minute check: tests pass, and the scorecard's WRONG column reads 0.0% on every row.
cargo test --release --offline
./target/release/baby school
./target/release/baby ask "what is two times four" # eight, with how it knew
./target/release/baby ask "what is seven times one" # probably seven: a labelled guess
./target/release/baby ask "three minus five" # ? (must refuse)
./target/release/baby ask "what is -3 plus 5" # ? (unreadable number: must refuse)
Check
If WRONG is ever above 0.0%, or a refusal battery in the tests starts answering, treat it as a regression: honesty is the property this project protects first.
Commands
Usage is printed at the top of baby/src/main.rs. Careful mode is the default; --permissive opts out of it.
| Command | What it does |
|---|---|
baby school [--permissive] | Teaches the 13-unit synthetic curriculum, prints the mechanism chosen for each unit and the honest scorecard, and saves the school. |
baby ask "..." [--permissive] | Asks a question. Prints the answer and how it knew, a labelled guess, or a refusal and why. |
baby learn "<q>" <a> [--unit NAME] [--wondered] | Keeps learning after school: a new phrasing, a correction, or a whole new unit. |
baby teach "<q>" <a> | Tells it something new in open vocabulary; kept in a file you can read. |
baby wonder [--check] [--limit N] | What would it like to be told? With --check, where would it test its own explanations? |
baby sleep [--compact] | Reorganises: merges units that follow one rule, splits ones that stopped. --compact forgets lessons that are fully explained. |
baby discover [--out FILE] | Finds the units itself from a heap of unlabelled lessons. |
baby grade | Re-runs the scorecard on a saved school. |
baby cost · baby effort · baby storage | What learning costs (time and memory); what answering costs (counted operations and estimated energy); what it keeps (lessons versus what was learned). |
Experiments
These are the long-running measurements behind the numbers on this site. Times are rough, on one laptop core.
| Command | Question it answers | About |
|---|---|---|
baby scale --sweep 20,60,200,600 | Does learning stay light as the world grows? Also --noise F, --digits, --typos F. | 5 min |
baby invent --seeds 20 | Can it work out kinds of lesson nobody wrote a mechanism for? Variants: --active, --check, --careful, --guesses, --corrections, --calibrate. | 8 min |
baby bridge --svamp FILE.json or --pairs FILE.tsv | Which of this survives real text? Loads a corpus, sets aside what it cannot read (and says why), teaches a share, grades the rest, and lists every wrong answer. | depends |
Several debug environment variables print the cases behind a number (for example SCALE_WRONG, INVENT_WRONG, CALIB_DEBUG). Almost every bug we found came from one of these listings and not from reasoning.
Concepts
| Lesson | A question and its answer. |
|---|---|
| Unit | A group of related lessons (sums, capitals, comparisons). Given by a teacher, or found by baby discover. |
| Mechanism | How a unit is learned: remember, rule, select, program or network. Chosen per unit from facts held back. |
| Held back | Facts kept out of the fitting to test how well a mechanism generalises. |
| Reliability bar | How well a mechanism must do on held-back facts before it may answer. Set from the noise the baby measures in its own lessons (0.8 to 0.9). |
| Pen | Where lessons that fit no unit wait; a new unit opens when enough gather. |
| Surprise gate | A lesson it can already work out is neither learned from nor stored. |
| Careful | Default mode: state a value as fact only inside the range taught or checked. |
| Guess | A labelled answer beyond that range, with its distance and a stated hit rate. Never counted as an answer. |
| Reach | The set of questions a unit may answer as fact: a staircase over the operands, not a box. |
Reading the scorecard
The scorecard grades four kinds of question: taught (asked exactly as taught), reworded (same fact, new phrasing), never taught (a new fact of a known kind), and beyond the taught range. For each it reports the share right, refused and WRONG, then, of the refused, how many came with a labelled guess and whether that guess was right. A refusal is acceptable. A wrong answer is not, and is reported on its own so that accuracy cannot hide it.
Code map
All under baby/src/.
| File | Role |
|---|---|
school.rs | The unified system: units, sparse incremental routing, ask, learn, the pen, reorganise, compact, save and load. |
mechanisms.rs | The mechanisms, cross-validation, mechanism choice, the voting memory, the reliability bar. |
program.rs | Expression search, the learned library, ambiguity detection by behaviour. |
quantity.rs | Number line, digits as numbers, exact ridge fit (plain and robust). |
discover.rs | Unit discovery from unlabelled lessons. |
invent.rs | The invention experiment: hidden kinds, deceptive kinds, kinds that must stay unexplained. |
scale.rs | The scale test generator and measurements. |
bridge.rs | The harness for real text. |
kinds.rs | The synthetic curriculum. |
ledger.rs | Counted operations and words moved, priced with published figures; optional RAPL reader. |
memory.rs · store.rs · net.rs · model.rs · data.rs · know.rs · life.rs · curious.rs · rules.rs · rng.rs · main.rs | Taught facts, the earlier network and its experiments, plumbing, and the command-line interface. |
The tests are the best specification of what each piece promises.
Repository documents
| README.md | The technical overview. |
| baby/README.md | The experiment log: every result, dead end and bug, newest first. |
| LEARNING.md | Learning-efficiency research notes and sources. |
| docs/Direction.md | Strategy, hardware terrain, language choice. |
| TransientVision.md | The founder's dated entries on why the project exists. |
| TransientHandover.md | Current state and next steps, for picking the work up. |
Contribute
Contributions are welcome under the project's licence. TransientAI is one person, so patience helps; the most useful things are replications, bug reports and adversarial questions.
- Replicate something on your own machine and tell us what you measured, especially if it differs.
- Break it. A question it should refuse but answers is the most valuable bug report. Open an issue with the exact question.
- Send a patch. Sign off each commit with the Developer Certificate of Origin (
git commit -s). There is no CLA, and that is deliberate.
Ground rules that protect the results:
- Report WRONG separately from refused. A new capability must not raise the WRONG column above 0.0%.
- Add must-refuse questions for every new capability, and think adversarially about what could be answered but should not be.
- Write down mistakes and rejected hypotheses as they happen.
- State caveats plainly: synthetic lessons, estimated joules, thresholds chosen by hand.
- Keep it light and dependency-free. A dependency has to earn its place with a measurement.
Before opening a pull request:
cargo build --release --offline
cargo test --release --offline
./target/release/baby school # WRONG must read 0.0% on every row
The repository's CONTRIBUTING.md has the same rules and the licence header for new files.
Licence
The Transient code is AGPL-3.0-only. Anyone may use, study, change and share it. Anyone who distributes it, or lets others use a modified version over a network, must offer those users the corresponding source under the same terms. That network clause is the reason for choosing it: the aim is that this work stays open and is not quietly closed behind a service. See the repository's LICENSE.