66 - specs/data-model.md
77 - specs/behaviors/storage.md
88 - specs/behaviors/slug-handles.md
9+ pr : 240
910---
1011
1112# Plan: child records reference path-keyed parents by slug
8283
8384## Validation
8485
85- - [ ] The six schemas hold slug references; reference map derived; v2
86+ - [x ] The six schemas hold slug references; reference map derived; v2
8687 contracts published, v1 unchanged
87- - [ ] No ` projectId ` /` personId ` /` eventId ` left on the six sheets' records
88+ - [x ] No ` projectId ` /` personId ` /` eventId ` left on the six sheets' records
8889 or in their indexes (grep), API responses unchanged (existing API
8990 tests green)
90- - [ ] Generic rename test covers every entry in the reference map
91- - [ ] Migration: idempotent; refuses to write if any reference doesn't
91+ - [x ] Generic rename test covers every entry in the reference map
92+ - [x ] Migration: idempotent; refuses to write if any reference doesn't
9293 resolve; ` contracts verify ` passes after it on every branch
93- - [ ] ` type-check ` + ` lint ` + full suite green
94+ - [x ] ` type-check ` + ` lint ` + full suite green
9495- [ ] ` published ` migrated and adopted in lockstep with the release;
9596 sandbox and production boot
9697
@@ -105,4 +106,25 @@ Out:
105106
106107## Notes
107108
109+ - Rehearsed on a copy of production ` published ` : 1,450 records rewritten
110+ (the diff is deletions only, since the slugs were already on disk from
111+ write-time injection), ` contracts verify ` ok, the second run a no-op, and
112+ the new code boots in declared mode and loads in 1.9s.
113+ - ` empty ` , ` fixture ` and ` legacy-import ` adopted v2 from ` a60d226 ` (pinned in
114+ ` sources.toml ` ; merge #240 with a merge commit so it stays reachable),
115+ migrated, and verify.
116+ - Fixes from the refactor: prune-spam's member protection compared ids
117+ that no longer exist (it protected no one); it also deletes the pruned
118+ person's RSVPs. Account-claim merge re-points the requester's RSVPs.
119+ scrub-data pseudonymizes every person-slug reference consistently.
120+ - Remaining before ` done ` : migrate and adopt on ` published ` in lockstep
121+ with the release, then boot sandbox and production.
122+
108123## Follow-ups
124+
125+ - Tracked as: a buzz item's own ` ?regenerateSlug ` still doesn't carry its
126+ image attachment (pre-existing; gitsheets 2.8+ rename-on-upsert fixes it
127+ with the 2.9 bump).
128+ - Tracked as: the gitsheets 2.9 bump ([ ` gitsheets-2.8 ` ] ( gitsheets-2.8.md ) ,
129+ to be retitled) lands next. #304 's open-time check passes because every
130+ template field is now required.
0 commit comments