personal memory agent

feat(contract): relax `raw` to producer invariant, off the screen+audio floor master

The screen-jsonl and audio-jsonl at-rest contracts marked the producer-specific `raw` header field as universally `required` on their shared floor. A terminal/tmux screen observer with no source media legitimately emits no `raw` and was rejected `422 ingest_contract_invalid` and quarantined; the audio side carried the same latent trap. Drop `raw` from `$defs.header.required` in both schemas (it stays in `properties` so a present value type-checks, and in `x-journal-contract.key_fields` so the breaking-change classifier nets to zero). `raw` is now a producer-owned invariant — emitted by the screen describer and audio transcriber and pinned by producer tests — not a shared-floor requirement. Regenerate the committed bundle. Document the floor model in the contract module and add the journal-format-contract-maintenance playbook (adding a new-format observer; the forward-compat governing principle). Add coverage: producer-invariant red-fail guards, no-raw at-rest + ingest acceptance for both families, a non-raw floor violation still rejecting, an old-floor check confirming the fixtures failed only on `raw`, and no-silent-skip selector coverage. The no-raw screen/audio fixtures are faithful synthetics (the real quarantined suze artifact could not be safely pulled from the production host). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>