fix(transit): double-transit rows in a stable order; cross-layer tests follow the aspect fix (BUG-1185)
With the aspect count from 1 (42d1582f) the public charts get same-layer
overlaps for the first time, and the overlap / cross-layer loops iterated
Python sets, so the double_transit list order changed with PYTHONHASHSEED
(the D1/CL golden failed under seeds 1 and 2). The loops now iterate sorted
names; the golden is recaptured and passes under seeds 0/1/2/5.
tests/test_double_transit_cross_layer_pairing.py: three expectations updated
with original / new / reason (Jobs house-7 summary now leads with the D1
layer; the ninth-house non-pairing example moves to Jobs house 9; the
same-house set is recomputed).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0176cb3008
commit
db5a0509da
@@ -13306,7 +13306,8 @@ def cmd_double_transit_pac(args):
|
||||
|
||||
# D1 层 overlap
|
||||
d1_overlap = jup_d1 & sat_d1
|
||||
for t in d1_overlap:
|
||||
# 按名字排序:集合遍历顺序随 PYTHONHASHSEED 变,结果列表不得随之变(BUG-1185)。
|
||||
for t in sorted(d1_overlap):
|
||||
results['double_transit'].append({
|
||||
'layer': 'D1', 'target': t,
|
||||
'jupiter_pac': results['d1']['jupiter'][t],
|
||||
@@ -13316,7 +13317,7 @@ def cmd_double_transit_pac(args):
|
||||
|
||||
# D9 层 overlap
|
||||
d9_overlap = jup_d9 & sat_d9
|
||||
for t in d9_overlap:
|
||||
for t in sorted(d9_overlap):
|
||||
results['double_transit'].append({
|
||||
'layer': 'D9', 'target': t,
|
||||
'jupiter_pac': results['d9']['jupiter'][t],
|
||||
@@ -13326,7 +13327,7 @@ def cmd_double_transit_pac(args):
|
||||
|
||||
# Chandra Lagna 层 overlap
|
||||
cl_overlap = jup_cl & sat_cl
|
||||
for t in cl_overlap:
|
||||
for t in sorted(cl_overlap):
|
||||
results['double_transit'].append({
|
||||
'layer': 'CL', 'target': t,
|
||||
'jupiter_pac': results['cl']['jupiter'][t],
|
||||
@@ -13341,8 +13342,8 @@ def cmd_double_transit_pac(args):
|
||||
for name, rows in target_meta['D1'].items()}
|
||||
d9_ids = {name: _double_transit_target_identities(rows, event_house, event_lord)
|
||||
for name, rows in target_meta['D9'].items()}
|
||||
for d1t in jup_d1:
|
||||
for d9t in sat_d9:
|
||||
for d1t in sorted(jup_d1):
|
||||
for d9t in sorted(sat_d9):
|
||||
if d1_ids[d1t] & d9_ids[d9t]:
|
||||
results['double_transit'].append({
|
||||
'layer': 'D1+D9', 'target': f'Jupiter(D1){d1t} + Saturn(D9){d9t}',
|
||||
@@ -13350,8 +13351,8 @@ def cmd_double_transit_pac(args):
|
||||
'saturn_pac': results['d9']['saturn'][d9t],
|
||||
'strength': 'moderate',
|
||||
})
|
||||
for d1t in sat_d1:
|
||||
for d9t in jup_d9:
|
||||
for d1t in sorted(sat_d1):
|
||||
for d9t in sorted(jup_d9):
|
||||
if d1_ids[d1t] & d9_ids[d9t]:
|
||||
results['double_transit'].append({
|
||||
'layer': 'D1+D9', 'target': f'Saturn(D1){d1t} + Jupiter(D9){d9t}',
|
||||
|
||||
Reference in New Issue
Block a user