Skip to content

World stage c2a: pair fluents (the definition, the runtime, and the fixtures), after the rounding of the similarity range (WM.61) - #33

Merged
jonwillits merged 2 commits into
mainfrom
world-c2a
Oct 21, 2026
Merged

jonwillits merged 2 commits into
mainfrom
world-c2a

Conversation

@jonwillits

Copy link
Copy Markdown
Contributor

Item 1 (Jon's ruling WM.61): the taxonomy's summary.yaml writes the superordinates' similarity range at 6 decimals, as the CSVs are; the golden hashes of summary.yaml moved for default, relations, rule_file, tiny, and tiny_relations, and the a5a comparison rounds the golden values. A scan of every YAML and JSON output found no other real computed by a library function at full precision.

Pair fluents between entities, as an event file defines them (docs/specs/WORLD_PHASE_C.md, stage c2a):

  • pair_fluents.py: PairFluent and PairFluents, the event file's pair_fluents block, the initial pairs from the new stream world:pair_initial (after world:pair_fluents, both after world:place_event_types), initial_pairs.csv.
  • dynamics.py and event_file.py: PairLiteral (pair, pair_some, pair_someof, pair_same), pair effects (Effect.second), the spatial block.
  • event_types.py: the rules for explicit pair entries (naming the file and the entry), the compiled literals of F4 with the origin profile, check_dynamics over pairs.
  • definition.py: the symbol kind pair_fluent, the entity-scope pair literals in the literal table, pair literals and effects in the records, spatial and spatial_id, the loader and pair cones.
  • runtime.py: State.pairs, derive over SOME and SOMEOF, legal over the four kinds, apply with symmetric writes and the profile invariant (ProfileViolationError, kind profile), non-interference over pairs, rows, and columns.
  • episodes.py and history.py: the initial pairs among the participants, the redraw after every other draw, pair changes, replay.
  • fixtures.py: the brute-force evaluator over pair sets, initial_pairs and pairs in the fixture format, the hand world with three pair fluents and hand_29 to hand_37 (fixtures 1 to 4, 10, 12 to 14, and 16 of the specification); the tiny fixtures are unchanged.
  • The corpus refuses a world with pair fluents (stage c4), world_stats counts a pair condition literal only when present.
  • data/world/events/pair_example.yaml and data/world/tiny_pairs.yaml, the world of the acceptance checks.

Every world without an event file that defines pair fluents is byte-identical to stage c1 (no snapshot figure or baseline moved). Documents: the proposal file, WM.61, WM.62, and WM.E256 to WM.E268 in docs/DECISIONS.md, the as-built notes and the note of WM.62 on stage c3 in WORLD_PHASE_C.md, WORLD.md, TAXONOMY.md, the guides' run times, the fixtures README, and CLAUDE.md.

Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com

jonwillits and others added 2 commits October 21, 2026 10:34
…ixtures), after the rounding of the similarity range (WM.61)

Item 1 (Jon's ruling WM.61): the taxonomy's summary.yaml writes the superordinates' similarity range at 6 decimals, as the CSVs are; the golden hashes of summary.yaml moved for default, relations, rule_file, tiny, and tiny_relations, and the a5a comparison rounds the golden values. A scan of every YAML and JSON output found no other real computed by a library function at full precision.

Pair fluents between entities, as an event file defines them (docs/specs/WORLD_PHASE_C.md, stage c2a):

- pair_fluents.py: PairFluent and PairFluents, the event file's pair_fluents block, the initial pairs from the new stream world:pair_initial (after world:pair_fluents, both after world:place_event_types), initial_pairs.csv.
- dynamics.py and event_file.py: PairLiteral (pair, pair_some, pair_someof, pair_same), pair effects (Effect.second), the spatial block.
- event_types.py: the rules for explicit pair entries (naming the file and the entry), the compiled literals of F4 with the origin profile, check_dynamics over pairs.
- definition.py: the symbol kind pair_fluent, the entity-scope pair literals in the literal table, pair literals and effects in the records, spatial and spatial_id, the loader and pair cones.
- runtime.py: State.pairs, derive over SOME and SOMEOF, legal over the four kinds, apply with symmetric writes and the profile invariant (ProfileViolationError, kind profile), non-interference over pairs, rows, and columns.
- episodes.py and history.py: the initial pairs among the participants, the redraw after every other draw, pair changes, replay.
- fixtures.py: the brute-force evaluator over pair sets, initial_pairs and pairs in the fixture format, the hand world with three pair fluents and hand_29 to hand_37 (fixtures 1 to 4, 10, 12 to 14, and 16 of the specification); the tiny fixtures are unchanged.
- The corpus refuses a world with pair fluents (stage c4), world_stats counts a pair condition literal only when present.
- data/world/events/pair_example.yaml and data/world/tiny_pairs.yaml, the world of the acceptance checks.

Every world without an event file that defines pair fluents is byte-identical to stage c1 (no snapshot figure or baseline moved). Documents: the proposal file, WM.61, WM.62, and WM.E256 to WM.E268 in docs/DECISIONS.md, the as-built notes and the note of WM.62 on stage c3 in WORLD_PHASE_C.md, WORLD.md, TAXONOMY.md, the guides' run times, the fixtures README, and CLAUDE.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ing extending WM.61)

The tiny taxonomies' superordinate similarity is about -1.24e-17, noise around zero, which rounded to 6 decimals was written as -0.0, a sign that depends on exactly the noise the rounding removes. rounded_similarity in the taxonomy's analysis.py now adds 0.0 after rounding; a test checks that -1e-17 is written as 0.0 and that the tiny taxonomy's summary.yaml holds no -0.0.

Golden hashes rewritten (make_golden_hashes.py): summary.yaml of tiny and tiny_relations.

Checked, not changed: every other value the world or the taxonomy rounds when drawn or written (the drift, the numeric effect constants, the initial numeric values, the scalar thresholds, the comparison margins, the rounded statistics) could give -0.0 in principle, but a scan of every YAML, JSON, and CSV output of every configuration in data/ found none, so the rule applies to the similarity range alone (stage c2a proposal, item 1 follow-up and choice 14; WM.E269).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@jonwillits
jonwillits merged commit 5f60ba8 into main Oct 21, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant