Repository navigation
World stage c2b: the generation of pair fluents, under Jon's ruling WM.63 (tiny_full and default_full until c4) - #34
Merged
Merged
Conversation
…M.63 (tiny_full and default_full until c4) Builds stage c2b of docs/specs/WORLD_PHASE_C.md: the pair_fluents block of the configuration and the pair shares (code defaults count 0 and locations 0, WM.63); drawn profiles and initial rates from world:pair_fluents in label order, with overrides and event-file entries replacing the draws after they are made; the streams world:pair_preconditions, world:pair_effects, and world:pair_conditions after world:pair_initial; pair literals in preconditions, pair effects, and pair conditions as replacements at their shares, with the compiled literals of F4, the redraws of contradictions, empty effects, contradicting compiled literals, and never-legal event types, and the implications of item 6 for pair conditions; derived fluents over SOME and SOMEOF with the quota derived_rules; the pair_fluents block of world_stats.yaml and its figures; the configurations data/world/tiny_full.yaml and default_full.yaml with their runs, snapshot figures, and off-setting baselines (pair_fluents_off, pair_dynamics_off); the generated fixtures of tiny_full; and the documents. The tiny and default worlds and corpora are unchanged (no snapshot figure moved), and tiny_pairs.yaml keeps stage c2a's rule-set identity. Proposal: docs/proposals/2026-10-21-world-stage-c2b-decisions.md (WM.63, WM.E270 to WM.E285). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…in preconditions, and the runtime's keys over pairs Three rulings of October 21, 2026, on the stage's open questions, built on world-c2b (docs/proposals/2026-10-21-world-stage-c2b-decisions.md, "Jon's rulings ... (the follow-up)"; WM.E286 to WM.E289): 1. A delete on a pair fluent that can never hold (initial rate 0 and no add anywhere) can never change anything, so fix_dead_deletes redraws it as an empty effect in the fix-up rounds until stable (seeds 1 to 5 of default_full: 1 own delete redrawn and 7 inherited dropped, all on seed 1). Checked, not changed: the default world has two := 1 effects on BOOLFL.3 (rate 1, never set false) that can never change the state; the tiny world has none (open question 8). 2. Item 6's implications extend to preconditions: a drawn pair literal implied by, contradicted by, or implying another literal of its precondition, or a compiled literal the adds will get, is redrawn (own) or dropped (inherited); compiled literals are never redrawn; the never-legal redraw rejects such candidates (seeds 1 to 5 of default_full: 1 literal redrawn, on seed 1). An explicit event file keeps c2a's exact rules. 3. The runtime keys a row or a column as one entry of the read and write sets (overlaps, covered, interference_sets), the policy computes each event's sets once, and apply_step copies only the pair matrices a fired effect writes (State shares a read-only matrix it is given). Every world, history, and fixture is byte-identical to the runs before the change; define data/world/default_full.yaml fell from 10.9 s to 7.2 s (default 6.9 s). Found on the way: one event type cannot add both directions of an asymmetric pair fluent (the profile breaks after the step); reverse_add_conflict makes it a contradiction in generation, in check_dynamics, and for an explicit entry. Figures that moved (python -m semantic_world.figures snapshot; no figure of tiny, default, or tiny_pairs moved, and no baseline of theirs; tiny_pairs gained the five new fix_ups counters at 0): default_full.world.conditional.share_of_all: 0.148148 -> 0.16 default_full.world.effects.by_kind.two_place: 59 -> 53 default_full.world.effects.by_role.agent: 46 -> 47 default_full.world.effects.by_role.patient: 35 -> 28 default_full.world.effects.total: 81 -> 75 default_full.world.enabling_graph.edges: 237 -> 234 default_full.world.episodes.mean_changes_per_event: 0.442485 -> 0.418616 default_full.world.episodes.two_place_share: 0.382152 -> 0.368358 default_full.world.fix_ups.effects_redrawn: 4 -> 5 default_full.world.fix_ups.literals_redrawn: 1 -> 2 default_full.world.numeric.changes_per_event: 0.245292 -> 0.238335 default_full.world.numeric.drift_changes_per_step: 8.585974 -> 8.596357 default_full.world.numeric.precondition_literals.by_kind.two_place: 14 -> 15 default_full.world.numeric.precondition_literals.by_role.patient: 11 -> 12 default_full.world.numeric.precondition_literals.by_side.above: 10 -> 11 default_full.world.numeric.precondition_literals.total: 20 -> 21 default_full.world.pair_fluents.changes_per_event: 0.017752 -> 0.018952 default_full.world.pair_fluents.effects.by_event_kind.two_place: 11 -> 5 default_full.world.pair_fluents.effects.by_pair_fluent.PAIRFL.1: 6 -> 0 default_full.world.pair_fluents.effects.by_pair_fluent.PAIRFL.2: 1 -> 2 default_full.world.pair_fluents.effects.by_pair_fluent.PAIRFL.3: 1 -> 0 default_full.world.pair_fluents.effects.by_role.agent: 4 -> 5 default_full.world.pair_fluents.effects.by_role.patient: 7 -> 0 default_full.world.pair_fluents.effects.by_value.delete: 10 -> 4 default_full.world.pair_fluents.effects.total: 11 -> 5 default_full.world.pair_fluents.fix_ups.effect_replacement_draws: 33 -> 35 default_full.world.pair_fluents.fix_ups.effect_replacements: 6 -> 7 default_full.world.pair_fluents.fix_ups.precondition_replacement_draws: 43 -> 44 default_full.world.pair_fluents.precondition_literals.by_event_kind.two_place: 12 -> 11 default_full.world.pair_fluents.precondition_literals.by_kind.pair: 2 -> 1 default_full.world.pair_fluents.precondition_literals.by_polarity.negative: 13 -> 12 default_full.world.pair_fluents.precondition_literals.by_role.agent: 14 -> 13 default_full.world.pair_fluents.precondition_literals.total: 15 -> 14 default_full.world.precondition_literals.by_role.agent: 42 -> 41 default_full.world.precondition_literals.by_role.patient: 32 -> 33 -> default_full.world.rule_set_code: `4cc7343df491...` -> `cb87e47c91c4...` default_full.world.rule_set_id: 4cc7343df491d8e46fb17be07556e271f1917e328dd0e9512e1a7894aca1ef5f -> cb87e47c91c45fac4c4338d415dd3485d84471109abd4f9751ee00a059f8fee3 default_full.world.rule_set_short: 4cc7343df491 -> cb87e47c91c4 tiny_full.world.effects.by_role.agent: 7 -> 8 tiny_full.world.effects.by_role.patient: 3 -> 2 tiny_full.world.enabling_graph.edges: 7 -> 6 tiny_full.world.episodes.events: 8278 -> 8277 tiny_full.world.episodes.mean_changes_per_event: 0.286301 -> 0.322097 tiny_full.world.episodes.two_place_share: 0.354192 -> 0.353268 tiny_full.world.fix_ups.effects_redrawn: 1 -> 2 tiny_full.world.numeric.changes_per_event: 0.329427 -> 0.333937 tiny_full.world.numeric.drift_changes_per_step: 8.565917 -> 8.565734 tiny_full.world.pair_fluents.changes_per_event: 0.007973 -> 0.008336 tiny_full.world.pair_fluents.effects.by_event_kind.two_place: 2 -> 1 tiny_full.world.pair_fluents.effects.by_pair_fluent.PAIRFL.1: 1 -> 0 tiny_full.world.pair_fluents.effects.by_role.patient: 1 -> 0 tiny_full.world.pair_fluents.effects.by_value.delete: 2 -> 1 tiny_full.world.pair_fluents.effects.total: 2 -> 1 tiny_full.world.pair_fluents.fix_ups.effect_replacement_draws: 7 -> 8 -> tiny_full.world.rule_set_code: `f61676fdfa0a...` -> `fd0132ef72de...` tiny_full.world.rule_set_id: f61676fdfa0a939de27eb80e0f134525c6ae2ba03a05eca787de10be6c08815b -> fd0132ef72debebec38c2ded327561d59a475355dc880abd4a5ad3b879907346 tiny_full.world.rule_set_short: f61676fdfa0a -> fd0132ef72de Baselines that moved (the off settings of the two full worlds that keep the pair draws): baselines.conditional_effects_off.default_full.rule_set_short: 11bc504b56af -> 237db8f80ed3 baselines.conditional_effects_off.tiny_full.rule_set_short: 441d25016e79 -> 6785a3c5b14f baselines.fluents_off.default_full.rule_set_short: b23eeb27a049 -> dde1d1825412 baselines.fluents_off.tiny_full.rule_set_short: 593139acc990 -> 133eba656fa6 baselines.numeric_fluents_off.default_full.rule_set_short: 875b801e5d8c -> c10abcbf0217 baselines.numeric_fluents_off.tiny_full.rule_set_short: 846cf9f7020c -> 09339441a18d baselines.places_off.default_full.rule_set_short: 0fdc14b92a18 -> 46bf62e0008d baselines.places_off.tiny_full.rule_set_short: 0f13db365f92 -> b041540a47db The generated fixtures of tiny_full were regenerated; the hand and tiny fixtures did not change. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Builds stage c2b of docs/specs/WORLD_PHASE_C.md: the pair_fluents block of the configuration and the pair shares (code defaults count 0 and locations 0, WM.63); drawn profiles and initial rates from world:pair_fluents in label order, with overrides and event-file entries replacing the draws after they are made; the streams world:pair_preconditions, world:pair_effects, and world:pair_conditions after world:pair_initial; pair literals in preconditions, pair effects, and pair conditions as replacements at their shares, with the compiled literals of F4, the redraws of contradictions, empty effects, contradicting compiled literals, and never-legal event types, and the implications of item 6 for pair conditions; derived fluents over SOME and SOMEOF with the quota derived_rules; the pair_fluents block of world_stats.yaml and its figures; the configurations data/world/tiny_full.yaml and default_full.yaml with their runs, snapshot figures, and off-setting baselines (pair_fluents_off, pair_dynamics_off); the generated fixtures of tiny_full; and the documents. The tiny and default worlds and corpora are unchanged (no snapshot figure moved), and tiny_pairs.yaml keeps stage c2a's rule-set identity.
Proposal: docs/proposals/2026-10-21-world-stage-c2b-decisions.md (WM.63, WM.E270 to WM.E285).
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com