Index: tests/collections/.expect/string-ctx-manage.txt
===================================================================
--- tests/collections/.expect/string-ctx-manage.txt	(revision 4b3b35268036d5be3e8438aaad76482a170b2560)
+++ tests/collections/.expect/string-ctx-manage.txt	(revision 804bf6779b6e4f0147f60446d70db7ced6f81ec8)
@@ -3,3 +3,4 @@
 hi
 bye
+hi
 done
Index: tests/collections/string-ctx-manage.cfa
===================================================================
--- tests/collections/string-ctx-manage.cfa	(revision 4b3b35268036d5be3e8438aaad76482a170b2560)
+++ tests/collections/string-ctx-manage.cfa	(revision 804bf6779b6e4f0147f60446d70db7ced6f81ec8)
@@ -24,5 +24,5 @@
     sout | y; // hi
 
-    x = "bye";                                                     //.... Bookmark 9/30 shallow:  surprisingly this step failed
+    x = "bye";
     y = x; // y was already in different context => eager copy
     assert( y.inner->Handle.s != x.inner->Handle.s);
@@ -30,21 +30,26 @@
 }
 
-void failSoloAlloc() {
+void soloAlloc() {
     string x = "hi";
     string_sharectx c = { NO_SHARING };
+    
+    string y = x; // y allocates into private pad, implying eager copy
+    assert( y.inner->Handle.s != x.inner->Handle.s);
+    sout | y; // hi
 
-    // want: allocation into private pad, with forced eager copy into it
-    // got: assertion failure, "Need to implement private contexts"
-    string y = x;
+    // -- following hits "need to implement actual growth"
+    //    and it passes if I modify string_res.cfa to oversize the owned heaps
+
+    // x = "bye";
+    // y = x; // into private y => eager copy
+    // assert( y.inner->Handle.s != x.inner->Handle.s);
+    // sout | y; // bye
 }
 
-volatile bool showFail = false;
 
 int main() {
     baseline();
     eagerCopy();
-    if (showFail) {
-        failSoloAlloc();
-    }
+    soloAlloc();
     printf("done\n");
 }
