Posts 1–12 stayed scoped to 3d chalcogenides. The v6.0 pipeline (post 8) already covers 23 metals across 3d, 4d, and 5d. This post asks whether post 12's rule bank actually carries over, or needs a per-row rewrite.

Post 12 closed the seven-step arc post 1 originally laid out, and every descriptor in it — M–X–M angle, ΔCT, U/W — was reasoned about using 3d transition metal physics. The v6.0 pipeline stopped agreeing with that scope a while ago: it already fetches and features 23 metals spanning 3d, 4d, and 5d, plus oxides. This post is the first attempt to find out whether the rule bank means anything outside the row it was built on.

What actually changes going down a column

Three things change systematically from 3d to 4d to 5d, and none of them are represented in the rule bank as written. d-orbitals get spatially larger going down a column, which increases the bandwidth W and weakens the on-site Coulomb repulsion U relative to it — so a compound that would sit above the Mott line (U/W > 1, insulating) as a 3d analog can sit below it (U/W < 1, metallic) as a 4d or 5d compound with otherwise similar structure. The same spatial extent increases M–X covalency, which should push ΔCT systematically more negative — more charge-transfer-like — for heavier rows. And spin-orbit coupling, which scales roughly as Z⁴ and is largely negligible for 3d, becomes significant for 4d and dominant for some 5d compounds, introducing physics (Jeff states, anisotropic exchange) that the angle-and-d-count GKA picture was never built to handle. The v6.0 pipeline already tracks this as the soc_sq feature — it's in the data, just not in the rule bank's branches.

Application: how the regime map should shift by row

The map below is the same ΔCT vs U/W classification space the rule bank's branches are built on, with the Mott line and the CT/MH boundary both drawn in. Toggle between rows to see the schematic shift the physics above predicts — not real fitted positions, just the direction and rough magnitude of the expected move.

Expected regime shift by row

ΔCT (x-axis) vs U/W (y-axis). Toggle rows to compare.

What this row is expected to look like

3d compounds: the row the rule bank in post 12 was actually built on — expect them to cluster near or above the Mott line, split fairly evenly between CT and MH character.

Schematic clusters, not real fitted points — this is the hypothesis the v6.0 dataset is meant to test, not a result.

What this means for the rule bank's branches

If the shift above is real, the rule bank doesn't need new branches so much as it needs branches that aren't allowed to share thresholds across rows. Post 12's table used fixed numeric cutoffs — ΔCT < −0.3 eV, U/W ≈ 1 — that were implicitly calibrated on 3d intuition. The qualitative structure (a CT branch, an MH branch, a boundary zone) likely still applies to 4d and 5d, but the numbers probably don't transfer directly; they need to be re-evaluated per row rather than assumed. Separately, spin-orbit coupling needs an actual new flag, not a rescaled threshold — for high-Z 5d compounds, a high soc_sq value should probably override the GKA-based magnetic branch entirely and route to “needs individual scrutiny,” the way the ΔCT ≈ 0 boundary already does.

A first check, before refitting anything

Before re-deriving any thresholds, the cheapest test is just checking whether the population actually moves the way the cluster toggle above predicts. No model fitting yet — just grouping the real v6.0 feature table by row and comparing fractions on each side of the existing boundaries.

# Cheapest possible test: does the population actually shift the way
# the schematic map above predicts, using post 12's EXISTING thresholds
import pandas as pd

df = pd.read_csv("mxcy_features_v6.csv") # v6.0 export, already has 3d/4d/5d
row_lookup = { # fill in from the periodic table
  "Fe": "3d", "Mn": "3d", "Mo": "4d", "W": "5d", # ...
}
df["row"] = df["metal_symbol"].map(row_lookup)

for row in ["3d", "4d", "5d"]:
  sub = df[df["row"] == row]
  ct_frac = (sub["delta_ct"] < -0.3).mean()
  mh_frac = (sub["delta_ct"] > 0.3).mean()
  below_mott = (sub["U_over_W"] < 1.0).mean()
  print(ff"{row}: CT={ct_frac:.0%} MH={mh_frac:.0%} below Mott line={below_mott:.0%}")

If the hypothesis holds, those three printed lines should show below Mott line and CT both climbing from 3d through 4d to 5d. If they don't move, or move in the wrong direction, that's more informative than a confirmation would be — it would mean either the row effect is weaker than the textbook expectation, or something in the v6.0 feature calculation isn't capturing it correctly for heavier rows.

Where this leads

This check is deliberately the cheapest one, run before touching the rule bank's actual formulas. Whichever way it comes out, the next step is harder: refitting (or explicitly declining to refit) the post-11 sparse regression separately per row, and deciding whether a single global rule bank with row as one more covariate is more honest than three separate row-specific banks.

4d/5d ChalcogenidesSpin-Orbit CouplingMott CriterionZSA ClassificationRule BankGeneralization