Skip to content

Commit 545e135

Browse files
fix(epac): consume corrected per-subshell Hund and falsified capacity rule
- Pin epac commit 7b3d99a with the corrected epac_b_derivation digest - Active-orbital set derivation check now asserts per-subshell structure, not the falsified capacity check - Coordination capacity recorded UNRESOLVED; six-equivalent-orbital capacity rule recorded FALSIFIED - Zn2+ regression carried through: d10 -> zero unpaired electrons - Supplied-topology B evaluations remain intact; generative gate stays RETAIN-BOUNDED - Receipt dc18bf783a9c71bc66558ec1edfd62b9e0f26031dd37299ed90ad2f701f078cc
1 parent 6126d36 commit 545e135

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

‎research/epac/epac_derivation_consumer.py‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@
6464
SCHEMA = "epac.derived-constitutive-carrier"
6565
VERSION = "0.1.0"
6666

67-
EPAC_REPO_COMMIT = "db3e1585e8176f3b2864532a8138dc0b5ca2f45f"
67+
EPAC_REPO_COMMIT = "7b3d99af9a456d2587e0489d7400e6f8b58c8a82"
6868
EPAC_ATOMIC_MODULE_SHA256 = "539a07c33c56de24bcae9f6ba270eb76b82de887f38b4f42ffa60b3ffb760d62"
6969
EPAC_ATOMIC_DERIVATION_MODULE_SHA256 = "8d6a7830c79f86b0aad1055039500f95ed254d204abab6b0c4747db95faf2451"
70-
EPAC_B_DERIVATION_MODULE_SHA256 = "60dbccecc50fdd950096a8673ae789e2db5f971f5b258c193f40e1b3c9183c92"
70+
EPAC_B_DERIVATION_MODULE_SHA256 = "ee36f45af6354947f35980e8ac3e033bb32fecb937a13e3704a6614b3b882d55"
7171

7272

7373
class DerivedCarrierError(ValueError):
@@ -264,9 +264,11 @@ def build_derived_carrier(epac_source_root: Path) -> dict[str, Any]:
264264
"transition_metal_failure_recorded": bool(transition_failure),
265265
"transition_metal_topology_evaluations": topology_evaluations,
266266
"active_orbital_set_derived_for_supplied_topologies": all(
267-
entry["ligand_count_within_center_capacity"]
267+
entry["center_active_orbital_set"]["kind"] == "transition-metal"
268268
for entry in topology_evaluations
269269
),
270+
"coordination_capacity": "UNRESOLVED",
271+
"capacity_rule_status": b_report["capacity_rule_status"],
270272
"topology_formation": "downstream, not tested here",
271273
"decision": "PROMOTE-GENERATIVE" if generative else "RETAIN-BOUNDED",
272274
"standing": (

‎research/epac/tests/test_epac_derivation_consumer.py‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646

4747
def test_binds_exact_epac_source() -> None:
4848
report = build_derived_carrier(EPAC_SOURCE_ROOT)
49-
assert report["epac_source_commit"].startswith("db3e158")
49+
assert report["epac_source_commit"].startswith("7b3d99a")
5050
assert report["source_bytes_verified"] is True
5151

5252
data = json.dumps(report, sort_keys=True, separators=(",", ":")).encode("utf-8")
@@ -79,13 +79,20 @@ def test_generative_gate_retains_bounded() -> None:
7979
assert gate["held_out_statuses"]["NH4+"] == "evaluation-only"
8080
# active-orbital set derived for supplied transition-metal topologies
8181
assert gate["active_orbital_set_derived_for_supplied_topologies"] is True
82+
assert gate["coordination_capacity"] == "UNRESOLVED"
83+
assert gate["capacity_rule_status"] == "FALSIFIED"
8284
assert gate["topology_formation"] == "downstream, not tested here"
8385
by_topology = {
8486
entry["topology"]: entry
8587
for entry in gate["transition_metal_topology_evaluations"]
8688
}
8789
assert by_topology["ScCl3"]["b_value"] == [3, 4, 3]
88-
assert by_topology["ScCl3"]["center_active_orbital_set"]["subshells"] == ["4s", "3d"]
90+
sc_active = by_topology["ScCl3"]["center_active_orbital_set"]
91+
assert [sub["subshell"] for sub in sc_active["subshells"]] == ["4s", "3d"]
92+
assert sc_active["coordination_capacity"] == "UNRESOLVED"
93+
# Zn2+ regression: d10 has zero unpaired electrons
94+
zn_active = by_topology["ZnCl2"]["center_active_orbital_set"]
95+
assert zn_active["unpaired_electrons"] == 0
8996

9097

9198
def test_uses_construction_not_lookup() -> None:

0 commit comments

Comments
 (0)