Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ For work on the world package or the corpus (the disembodied simulation), read `
6. `docs/specs/WORDFORM_PIPELINE.md` — the word-form pipeline: a Python program in `python/semantic_world/wordforms/` that makes spoken word forms, synthesizes them, and builds sound embeddings.
7. `docs/specs/CORPUS_GENERATOR.md` — the corpus generator: a Python program in `python/semantic_world/corpus/` that writes documents about the taxonomy's world in an artificial language, with a parse tree and a logical form for every sentence. Its numbered decisions, and the proposals they point to, are part of the specification.
8. `docs/specs/CONNECTED_SPEECH.md` — the plan for spoken sentences: whole utterances, alignment, pauses, speakers, and register. Planned, not built.
9. `docs/specs/WORLD_AND_LANGUAGE.md` — the world-and-language refactor: one world model of state and change for both simulation modes (fluents, event types with preconditions and effects, time steps), a new package `python/semantic_world/world/`, and the corpus rebuilt on that model. Built in phases and stages. Its decisions were reviewed by Jon on October 7, 2026, and are logged as WM.1 to WM.33 in `docs/DECISIONS.md`. Phase (a) is built (stages a1 to a8: the world package, the cut-over of the taxonomy and the corpus, the labels, states, changes, causal statements, descriptions, the documentation, and the regenerated datasets); the engineering choices of each stage are in `docs/proposals/` and logged as WM.E rows. Phase (b) is built: stage b1 (conditional effects), stage b2 (the world's comparisons and numeric fluents), stage b3a (the corpus's comparisons of scalars: relative gradable adjectives as comparisons, comparatives, and the comparison classes read from the world), and stage b3b (the numeric fluents in the corpus, `RAISES` and `LOWERS`, conditional causal statements, and the tense affix on the auxiliaries), each with a proposal file in `docs/proposals/`. Phase (c) is specified in `docs/specs/WORLD_PHASE_C.md` (item 10), and not yet built.
10. `docs/specs/WORLD_PHASE_C.md` — phase (c) of the world-and-language refactor: pair fluents (two-place fluents with profiles, `PAIRFL.<n>`), places from a second run of the taxonomy generator, location as a pair fluent toward places, place event types (moves and acts at a place), emergent habitats, and the corpus's statements about them. Decided with Jon on October 15 and 16, 2026 (WM.36 to WM.59). Built in seven stages, c1 to c5b; read `WORLD_AND_LANGUAGE.md` first.
9. `docs/specs/WORLD_AND_LANGUAGE.md` — the world-and-language refactor: one world model of state and change for both simulation modes (fluents, event types with preconditions and effects, time steps), a new package `python/semantic_world/world/`, and the corpus rebuilt on that model. Built in phases and stages. Its decisions were reviewed by Jon on October 7, 2026, and are logged as WM.1 to WM.33 in `docs/DECISIONS.md`. Phase (a) is built (stages a1 to a8: the world package, the cut-over of the taxonomy and the corpus, the labels, states, changes, causal statements, descriptions, the documentation, and the regenerated datasets); the engineering choices of each stage are in `docs/proposals/` and logged as WM.E rows. Phase (b) is built: stage b1 (conditional effects), stage b2 (the world's comparisons and numeric fluents), stage b3a (the corpus's comparisons of scalars: relative gradable adjectives as comparisons, comparatives, and the comparison classes read from the world), and stage b3b (the numeric fluents in the corpus, `RAISES` and `LOWERS`, conditional causal statements, and the tense affix on the auxiliaries), each with a proposal file in `docs/proposals/`. Phase (c) is specified in `docs/specs/WORLD_PHASE_C.md` (item 10) and has begun: stage c1 (places, the static side) is built, after Jon's ruling WM.60 that every real the world draws is rounded to 4 decimals when drawn.
10. `docs/specs/WORLD_PHASE_C.md` — phase (c) of the world-and-language refactor: pair fluents (two-place fluents with profiles, `PAIRFL.<n>`), places from a second run of the taxonomy generator, location as a pair fluent toward places, place event types (moves and acts at a place), emergent habitats, and the corpus's statements about them. Decided with Jon on October 15 and 16, 2026 (WM.36 to WM.59). Built in seven stages, c1 to c5b; stage c1 (places: the taxonomy's `labels.kind`, the second taxonomy run, place event types with requirements only, their capacities and statistics, and `view --places`) is built, and c2a is next; read `WORLD_AND_LANGUAGE.md` first.
11. `docs/DECISIONS.md` — the log of every design decision of the taxonomy, word-form, and corpus programs, and of the world model. Append new decisions to it.
12. `docs/guides/` — user guides for the world package (`WORLD.md`: what a world is, the commands, the outputs, the configuration, the default world's figures, the two-place share and its levers), the taxonomy generator (`TAXONOMY.md`), the word-form pipeline (`WORDFORMS.md`), and the corpus generator (`CORPUS.md`). `README.md` there has the full chain.
13. `docs/ENVIRONMENT_SURVEY.md` — background only: why the stack was chosen.
Expand Down Expand Up @@ -88,6 +88,7 @@ Other commands:
cargo run -p sw-schema -- schemas # regenerate schemas/*.json after changing the data-file types
cargo run -p sw-schema -- check data/experiments/m1_smoke.yaml # load and resolve an experiment
python -m semantic_world.taxonomy data/taxonomy/default.yaml [--seed N] [--out DIR] # run the taxonomy generator
python -m semantic_world.taxonomy data/taxonomy/places_default.yaml # a place taxonomy (labels.kind: place): the default world's second taxonomy run
pytest tests/taxonomy # the taxonomy generator's tests alone
python -m semantic_world.wordforms forms data/wordforms/default.yaml [--seed N] [--out DIR] # generate word forms
python -m semantic_world.wordforms synth data/wordforms/tiny.yaml [--seed N] [--out DIR] # word forms and their audio
Expand All @@ -106,6 +107,7 @@ python -m semantic_world.wordforms all data/wordforms/corpus_default.yaml
pytest tests/corpus # the corpus generator's tests alone
python -m semantic_world.world define data/world/default.yaml [--seed N] [--out DIR] # generate a world: the embedded taxonomy run, definition.json, entities.csv, derived values, statistics
python -m semantic_world.world view runs/world/tiny_seed1 --preset classic [--include PROPERTY,PART] [--out FILE] # a table for a model: base, static, or classic
python -m semantic_world.world view runs/world/tiny_seed1 --places [--preset static] # a table of the places (stage c1): base, static (with the determined place features and CANBE capacities), or classic
python -m semantic_world.world simulate runs/world/tiny_seed1 --episodes 100 [--seed N] [--legal] [--out FILE] [--config data/corpus/default.yaml] # run episodes of a world run and write episodes.jsonl; --config reads a corpus file's scene block
python tests/taxonomy/make_golden_hashes.py # rewrite the taxonomy's golden hashes after a deliberate change of the generator
python -m semantic_world.figures snapshot # rewrite tests/figures/snapshot.yaml (the figures of the default and tiny runs in runs/, and the baselines of the off settings) and print what moved
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The disembodied simulation is a chain of three Python programs, which need no Ru
2. **The corpus generator** states propositions about the world's rules and events, and realizes the propositions as documents in an artificial language, with test sets. Sentences can use conceptual labels or spoken words (`docs/guides/CORPUS.md`).
3. **The word-form pipeline** makes a spoken word for every word of the lexicon, with audio from many voices and sound embeddings (`docs/guides/WORDFORMS.md`).

The commands for the full chain are in `docs/guides/README.md`, under "The full chain". The chain ran at default scale on October 15, 2026 (stage b3b of the world-and-language refactor, every step): <!--figure:default.corpus.documents-->10,000<!--/figure--> documents with <!--figure:default.corpus.sentences-->100,917<!--/figure--> sentences, spoken words for <!--figure:default.corpus.lexemes.content|d-->203<!--/figure--> content lexemes and <!--figure:default.corpus.lexemes.function|d-->18<!--/figure--> function words with five sound embeddings, and <!--figure:default.corpus.test_sets.items-->32,914<!--/figure--> test items. Each guide states what its program does not do yet.
The commands for the full chain are in `docs/guides/README.md`, under "The full chain". The chain ran at default scale on October 15, 2026 (stage b3b of the world-and-language refactor, every step): <!--figure:default.corpus.documents-->10,000<!--/figure--> documents with <!--figure:default.corpus.sentences-->100,918<!--/figure--> sentences, spoken words for <!--figure:default.corpus.lexemes.content|d-->203<!--/figure--> content lexemes and <!--figure:default.corpus.lexemes.function|d-->18<!--/figure--> function words with five sound embeddings, and <!--figure:default.corpus.test_sets.items-->32,914<!--/figure--> test items. Each guide states what its program does not do yet.

## Purpose

Expand Down
2 changes: 2 additions & 0 deletions data/taxonomy/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
name: default
seed: 1 # master seed, a 64-bit unsigned integer

labels: {kind: entity} # the labels the run writes: entity (CATEGORY, INSTANCE, PROPERTY, PART, SCALARDIM) or place (PLACECATEGORY, PLACE, PLACEPROPERTY, PLACEPART, PLACESCALARDIM; stage c1)

features:
property: {count: 40, proportion_determined: 0.25, expected_true_free: 6}
part: {count: 40, proportion_determined: 0.25, expected_true_free: 6}
Expand Down
27 changes: 27 additions & 0 deletions data/taxonomy/places_default.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# The default place taxonomy (docs/specs/WORLD_PHASE_C.md, "Places"): 2 superordinates, depth 2,
# branching 3, and 2 places per kind, so 12 places in 8 categories; 12 place properties, a quarter
# of them determined by rules; no place parts; and 2 place scalars. The default world
# (data/world/default.yaml) runs it as its second taxonomy, with the seed of the stream
# world:places. With `labels.kind: place` the generator writes PLACECATEGORY, PLACE,
# ISA.PLACECATEGORY, PLACEPROPERTY, PLACEPART, and PLACESCALARDIM in place of the entity labels,
# and nothing else changes. Parameters not listed keep their defaults (see default.yaml).

name: places_default
seed: 1

labels: {kind: place}

features:
property: {count: 12, proportion_determined: 0.25, expected_true_free: 3} # 9 free, 3 determined; a free place property is true of a third of the places on average
part: {count: 0} # no place parts by default (WM.50)

taxonomy:
superordinates: 2
depth: 2
branching: 3

instances:
per_leaf: 2

scalars:
count: 2
25 changes: 25 additions & 0 deletions data/taxonomy/places_tiny.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# The tiny place taxonomy: 2 superordinates at depth 1 (the superordinates are the leaves) with
# 2 places each, so 4 places; 4 place properties, 1 of them determined; no place parts; and 1
# place scalar. The tiny world (data/world/tiny.yaml) runs it as its second taxonomy. Parameters
# not listed keep their defaults (see default.yaml).

name: places_tiny
seed: 1

labels: {kind: place}

features:
property: {count: 4, proportion_determined: 0.25, expected_true_free: 1} # 3 free, 1 determined
part: {count: 0}
base_rate_heterogeneity: null # equal base rates: with 3 free features, heterogeneous rates can leave a
# superordinate with no true feature, which the similarity bound cannot place

taxonomy:
superordinates: 2
depth: 1

instances:
per_leaf: 2

scalars:
count: 1
11 changes: 11 additions & 0 deletions data/world/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,14 @@ event_types:
numeric_share: 0.3 # the share of effects that are numeric (+= or -=, stage b2), when the world has numeric fluents
numeric_amounts: [0.1, 0.5] # the interval a numeric effect's constant is drawn from
event_file: null # a file of explicit event types

places: # the places (stage c1): a second taxonomy run; null turns places off
taxonomy: {config: data/taxonomy/places_default.yaml, seed: null} # a taxonomy configuration with labels.kind: place; null: the seed of the stream world:places
habitat_strength: 1.0 # the weight of an entity's capacities at a place in its initial place (stage c3; 0: uniform)

place_event_types: # the place event types (stage c1: requirements only; their moves and acts come in stage c3)
count: 4
move_share: 0.5 # the share that are moves (stage c3)
constraints: {1: 0.6, 2: 0.4} # weights over the number of constraints of a requirement
constraint_families: {agent: 1, patient: 1, cross: 1, key_lock: 1} # the comparison family (an entity scalar against a place scalar) is off by default
rules: {} # overrides of the taxonomy's rules settings for the constraints
7 changes: 5 additions & 2 deletions data/world/tiny.yaml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# A world small enough to read by eye: the tiny taxonomy with 1 scalar dimension (12 instances),
# 4 one-place event types, 4 two-place event types in a tree of 2 superordinates, and 4 fluents.
# Parameters not listed keep their defaults (see default.yaml).
# 4 one-place event types, 4 two-place event types in a tree of 2 superordinates, 4 fluents, and,
# since stage c1, the tiny place taxonomy (4 places) with 2 place event types. Parameters not
# listed keep their defaults (see default.yaml).

name: tiny
seed: 1
taxonomy: {config: data/taxonomy/tiny_relations.yaml}
places: {taxonomy: {config: data/taxonomy/places_tiny.yaml}}
place_event_types: {count: 2}

fluents:
count: 4
Expand Down
Loading
Loading