from research import *
from algebra import Matrix
s=begin(1156,'Compare regular and cumulative parameter visibility','Which parts of the shared source change are invisible in each chronological measurement?',{},['C1154','Strategy §§3.1–3.2'])
d=json.loads((ROOT/'model/postflood_amplitude_dictionary.json').read_text());R=Matrix(d['R_mask']);S=Matrix(d['SP_A_mask']);L=Matrix(d['LXX_A_mask'])
data={'regular_rank':R.rank(),'SP_lifespan_rank':S.rank(),'LXX_lifespan_rank':L.rank(),'combined_lifespan_rank':S.col_join(L).rank(),'regular_kernel':[clean(list(x)) for x in R.nullspace()],'interpretation':'regular seesu only; SP cumulative sees t only; full LXX cumulative row differences seeu,t,a'}
a=artifact('model/postflood_projection_visibility.json',json.dumps(data,indent=2)+'\n')
finish(s,{'projection_visibility':a,'ranks':[R.rank(),S.rank(),L.rank()]},'The same source dictionary has different visible information in each mode: regular ages see only100, SP life differences only60, and the full LXX life field sees all three amplitudes. This explains aligned births alongside different cumulative structures.','Determine what is lost when the complete lifespan fields are reduced to their outer totals.',{'regular_rank1':R.rank()==1,'SP_rank1':S.rank()==1,'LXX_rank3':L.rank()==3})
