Data Model: Repo-relative retrospective record_path (#5868)

No new entities. One field's form changes on an existing entity.

RetrospectiveCaptured event (src/specify_cli/retrospective/lifecycle_events.py)

FieldTypeBeforeAfter
record_pathstringAbsolute filesystem path (/home/<user>/.../kitty-specs/<slug>/retrospective.yaml)Repository-relative POSIX path (kitty-specs/<slug>/retrospective.yaml)

All other envelope fields unchanged (NFR-001).

Invariant

record_path, when joined onto the repository root, resolves to the same retrospective.yaml written by the record writer (canonical_record_path). The on-disk Path used for the write is unchanged — only the recorded string becomes relative.

Derivation

feature_dir   = resolve_retrospective_home(repo_root, record.mission_slug)   # repo_root / kitty-specs / <slug>
canonical_path = feature_dir / RETROSPECTIVE_FILENAME                        # absolute Path (unchanged, used for I/O)
record_path   = canonical_path.relative_to(repo_root).as_posix()             # "kitty-specs/<slug>/retrospective.yaml"