from research import *
s=begin(1045,'Residual source freedoms','Which biological or household data remain unidentifiable after normalization?',{},['C1044'])
from covenant_model import *
from algebra import Matrix
p=json.loads((ROOT/'model/covenant_normalized_constraints.json').read_text());M=Matrix(p['matrix']);vectors=[[0,0,0,0,-1,1,0,0,0,0,0,0,0],[0,0,-1,-1,1,0,-1,0,1,1,0,0,0]];effects=[]
for v in vectors:
full={k:F(v[i]) if i<13 else F(0) for i,k in enumerate(KEYS)};effects.append(regular(full))
finish(s,{'formal_null_directions':vectors,'node_effects':effects,'status':'sensitivity directions only; no new source state'},'One direction exchanges Isaac→Jacob age with Jacob’s call age; another adjusts several source offsets and equal lives together. Both preserve the selected pattern totals while changing local data.','Test which retained source ages close those remaining freedoms.',{'both_null':all(list(M*Matrix(v))==[0]*M.rows for v in vectors),'independent_directions':Matrix(vectors).rank()==2})
Evidence
s1045.py
Edition and provenance
s1045.py
SHA-256 297797d1bd7b16f8e0d0ff9589fad48f89cfe4fdce6647856498fcfe75994034
C480–C1634/Research_Cycles/C0932_C1131/evidence/s1045.py