personal memory agent

fixture(segment): land the projection generator, and disambiguate two steps of its rule master

The fixture claimed a generated rule while no generator existed beside it, so a reader of this repository could not regenerate or verify it. The generator now lives in scripts/, where the other contract gates already are, and it refuses to emit unless the legacy half reproduces the shipped derivation and every declared step has an observable probe. Two steps were ambiguous about which value they applied to, and the ambiguity produced a real disagreement: read one way, the rule yields iphone_device for label iPhone with source !!!, where the corpus says iphone. Stated properly now — the empty-result fallback applies to the LABEL only and never to the source, and the source is appended when the PROJECTED source is non-empty, so a source that filters away appends nothing rather than taking the fallback. Same defect class as the four vectors this sentence contradicted a day ago, in the same sentence: prose adjacent to a checked artifact drifts because nothing compares them. The step probes are what compare them now. make ci green.