fixtures: seed an unsynced Curies group
Marie and Pierre share Curies, a group no book will claim,
so a sync: rename in the admin UI brings them into the frame.
Two more cards move the replayed ctag from nineteen up to twenty-one;
the recorded requests are untouched, only four responses re-run.

Assisted-by: Claude Opus 5 via Claude Code
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
change lwytnxxyvswxzwqxzuqypxlwxlsxnlut
commit 678e68a3528cfa7329bde59e6896402a1b5ae850
author Alpha Chen <alpha@kejadlen.dev>
date
parent uuzssrnt
diff --git a/test/fixture_data.rb b/test/fixture_data.rb
index 67bae0e..67c3c3f 100644
--- a/test/fixture_data.rb
+++ b/test/fixture_data.rb
@@ -20,7 +20,7 @@ module FixtureData
 
   # The first card is stamped now and each one after it is #SPREAD times
   # older than the last, so the seed book runs from this minute out to
-  # about five years at nineteen cards. Computed rather than tabulated
+  # about thirty years at twenty-one cards. Computed rather than tabulated
   # because a table runs out: adding cards past the end of one either
   # wraps — two cards sharing a stamp, and a recently-updated list that
   # opens on a tie — or leaves the tail unstamped. Spread rather than
@@ -93,16 +93,21 @@ module FixtureData
     cards.keys.grep(/\Aunsynced-/)
   end
 
+  # A household nobody syncs yet: unsynced cards in a group with no
+  # `sync:` prefix, so joining them to a book is one rename in the admin UI.
+  CURIES = %w[unsynced-marie unsynced-pierre].freeze #: Array[String]
+
   # The third is `sync:*`, holding every card but the unsynced ones, so
   # every user's book is the rest of the seed — the replay's included,
   # whose recorded sessions saw every card they asked for — and the
   # admin UI still shows a contact that is in nobody's
-  # (docs/plans/2026-09-12-per-user-books.md).
+  # (docs/plans/2026-09-12-per-user-books.md). The fourth is CURIES'.
   #: (ProTacts::Store store) -> void
   def self.seed_groups(store)
     seed_group(store, name: "Booles", lines: HOUSEHOLD, members: MEMBERS)
     seed_group(store, members: birthday_cards)
     seed_group(store, name: ProTacts::Store::EVERYONE, members: cards.keys - unsynced_cards)
+    seed_group(store, name: "Curies", members: CURIES)
   end
 
   # A group, seeded without a change-log entry for any member it moves
diff --git a/test/fixtures/cards/unsynced-marie.vcf b/test/fixtures/cards/unsynced-marie.vcf
new file mode 100644
index 0000000..2024c2d
--- /dev/null
+++ b/test/fixtures/cards/unsynced-marie.vcf
@@ -0,0 +1,9 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Curie;Marie;;;
+FN:Marie Curie
+EMAIL:marie@example.com
+TEL;TYPE=cell:+33 6 12 34 56 01
+BDAY:1867-11-07
+UID:unsynced-marie
+END:VCARD
diff --git a/test/fixtures/cards/unsynced-pierre.vcf b/test/fixtures/cards/unsynced-pierre.vcf
new file mode 100644
index 0000000..1eb6ab7
--- /dev/null
+++ b/test/fixtures/cards/unsynced-pierre.vcf
@@ -0,0 +1,9 @@
+BEGIN:VCARD
+VERSION:3.0
+N:Curie;Pierre;;;
+FN:Pierre Curie
+EMAIL:pierre@example.com
+TEL;TYPE=cell:+33 6 12 34 56 02
+BDAY:1859-05-15
+UID:unsynced-pierre
+END:VCARD
diff --git a/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response b/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
index 2185e73..36751ea 100644
--- a/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
+++ b/test/fixtures/ios-exchange/02-propfind-addressbook-ctag/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
             </d:report>
           </d:supported-report>
         </d:supported-report-set>
-        <cs:getctag>19</cs:getctag>
-        <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+        <cs:getctag>21</cs:getctag>
+        <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
         <d:current-user-privilege-set>
           <d:privilege>
             <d:read/>
diff --git a/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response b/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
index c7bc124..2448324 100644
--- a/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
+++ b/test/fixtures/ios-exchange/03-propfind-addressbook-bootstrap/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
             </d:report>
           </d:supported-report>
         </d:supported-report-set>
-        <cs:getctag>19</cs:getctag>
-        <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+        <cs:getctag>21</cs:getctag>
+        <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
         <d:current-user-privilege-set>
           <d:privilege>
             <d:read/>
diff --git a/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response b/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
index 2185e73..36751ea 100644
--- a/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
+++ b/test/fixtures/macos-exchange/05-propfind-addressbook-ctag/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
             </d:report>
           </d:supported-report>
         </d:supported-report-set>
-        <cs:getctag>19</cs:getctag>
-        <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+        <cs:getctag>21</cs:getctag>
+        <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
         <d:current-user-privilege-set>
           <d:privilege>
             <d:read/>
diff --git a/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response b/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
index c7bc124..2448324 100644
--- a/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
+++ b/test/fixtures/macos-exchange/09-propfind-addressbook-bootstrap/response
@@ -18,8 +18,8 @@ Content-Type: text/xml
             </d:report>
           </d:supported-report>
         </d:supported-report-set>
-        <cs:getctag>19</cs:getctag>
-        <d:sync-token>http://pro-tacts/sync/19/336e00f5e1ec2674</d:sync-token>
+        <cs:getctag>21</cs:getctag>
+        <d:sync-token>http://pro-tacts/sync/21/336e00f5e1ec2674</d:sync-token>
         <d:current-user-privilege-set>
           <d:privilege>
             <d:read/>