Repository navigation
Conversation
Cover a closure-only Child module and a second role entity so selected-path and hardcoded guards cannot allow duplicate unit inputs. Extend the old-gather comparison to retain its coverage without role defaults.
Keep Person and Household inputs on their correspondence tables instead of writing them again on built units. Cover both entities through encode_groups and scenario_override.
This branch has not been deployed
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.
WIP. Three follow-ups to #1480 (S2b PR 2), from the three optional findings (P3s) in its approving review (#1480 (comment)). The Belgium session lands it after local runs, reach, an independent review and the NZ hub's clearance.
What it changes
e1e90dccpins the type-only default clashes.test_person_and_child_type_only_defaults_conflictruns each type-only pair (0/False,0/0.0,False/0.0,1/True) in both gather orders and expects the "conflicting defaults" refusal. Before, only the merge property caught a weakened type check, and only on runs that drew a clash on type alone: the review'sisinstance_typesmutant survived 72 of its 100 seeded runs.eafaad73tests the group kernels'person_rolerefusal against every role in the mapping.test_group_kernels_refuse_a_person_role_entitynow adds a closure-onlyChildmodule (xx/child_defaults.yaml) and a secondperson_roleentity,Dependant, so a guard that reads only the selected modules, or namesChildalone, fails it.test_without_person_role_defaults_encoding_matches_the_old_gathertakes the second entity too and still checks what its name says: with noperson_roledefault in the closure, the kernel writes exactly the columns and values of the old gather, which ignoredperson_roleentities.2ec2c55fmakes both group kernels (concepts.encode_groups@1andtransport.scenario_override@1, through_group_inputsintransport/column_kernels.py) refuse anengine_entitythat the mapping's entity correspondence names (PersonandHousehold).concepts.encode@1writes those entities' inputs on their own tables, so a group kernel would write them again on built units.test_group_kernels_refuse_a_correspondence_entitycovers both kernels and both entities.Mutants [the build lane's runs; the independent review re-runs them]: the review's
values_onlyandisinstance_typesfail the column file under each of 10 Hypothesis seeds;guard_selected_pathsandguard_hardcoded_childfailtest_group_kernels_refuse_a_person_role_entity; and removing the new guard fails all four cases oftest_group_kernels_refuse_a_correspondence_entity.What it refuses on main
On main
fc5bb901, 12 group-kernel nodes appear in the 664 tracked JSON files, all withengine_entityFamily: 8concepts.encode_groups@1and 3transport.scenario_override@1in NZ'sscenarios.json, and 1concepts.encode_groups@1in NZ'stransport_graph.json[executed]. NZ's correspondence maps{household: Household, person: Person}. The Python graph builders (tools/build_nz_transport_graph.pyand the composed-graph test support) also passFamily. So the new guard refuses no node that NZ or the toy graphs build.Plan
🤖 Generated with Claude Code