Freeze the schema as v4 !7

merged merged by cmc on 2026-09-04 14:23 UTC · krz/ambient-companions:feat/schema-v4-freeze into main

cmc

Middle of the v0.5 stack. Targets fix/skip-unknown-frames (!6); retarget to main once that merges.

SignalName drops the 18 variants with no producer and renumbers the remaining eleven 0..=10. SCHEMA_VERSION is 4, documented as the 1.0 contract — discriminants are append-only from 1.0, so this is the last chance to renumber.

Tag::bundle_id and Tag::ssh_host deleted (both todo!(), both consumers removed). signald::tag_within_roots enforces the watched-root prefix that Tag::repo_path's doc used to promise, comparing by path component so /a/bc is not under /a/b.

History::open deletes rows from another schema version. Without it every pre-upgrade row sits unreadable and silently skipped — query() rebuilds from the stored frame, which wire::decode refuses across a version change — until retention catches up a week later.

Swift enum, SCHEMA_VERSION, WireTests.swift, hardware_wire.rs and the macos-collector/README.md byte table all move to the v4 discriminants. The README's privacy note claimed three audited tag identifiers; only the repo path exists.

Closes #2

retargeted from fix/skip-unknown-frames to main: !6 merged

2026-09-04 14:23 UTC