-- What a build result carried and the mesh threw away. -- -- novox/hq 04-ISSUES/050. The builder announces a build with the resolved manifest, the path -- inside the repository, and every artifact it was built against. The control plane receives all -- of it and kept none of it: `build` held the repository, the ref, the commit and what was made. -- -- That was survivable while the catalogue heard the same announcement directly. It stops being -- survivable the moment the catalogue was not there to hear it — which on a fresh mesh is always, -- and always for the same modules. The shared base, the store the catalogue itself runs on, and -- the catalogue: each is necessarily built BEFORE the catalogue exists to hear about it, so the -- graph's foundation is the part the graph never sees. -- -- Replaying those builds needs what they said, not a summary of it. Without the manifest there -- are no requires/provides edges; without `against` there are no build edges, which are the ones -- that answer "a base moved, what must be rebuilt". A replay carrying neither would restore the -- module list and leave the question the catalogue exists for still wrong, while looking fixed. -- -- Empty and null-free, so every build recorded before this keeps exactly the meaning it had: a -- row with no manifest is one that predates this, and a replay says so rather than inventing an -- empty declaration. -- -- `built_against` rather than `built_on`: that column already exists and means the MACHINE that -- did the build, which is a different fact about a different subject. alter table build add column source_path text not null default ''; alter table build add column manifest jsonb; alter table build add column built_against jsonb;