Spec clarification for purge semantics and branches
Clarified purge semantics in spec to read-path removal language, added canonical BranchInfo field documentation, documented the default branch convention, and added the register_upcaster docstring.
v0.10.0v2026-06-12
·FOSSIC_V1_SPEC.md §9.3 and §16.8 rewritten: purge removes events from the read path entirely; the Purged audit event is in _fossic/system, not the original stream
·BranchInfo canonical field table added to §8 — .id and .lifecycle confirmed as correct field names (not .branch_id or .status)
·Default branch convention documented in §8: list_branches returns empty for streams with no forked branches; the implicit main trunk is always accessible
·Tilde expansion paragraphs added to §4.2 and §4.3: Store.open uses shellexpand at the binding boundary; os.path.expanduser() is redundant
·register_upcaster docstring added to fossic-py: (payload: dict) → dict signature, fires at read time, UpcasterChainGapError on chain gap