<html><head></head><body>  <div dir="auto">Furthermore, some methods will not modify that object, but an object it sends a message to. In the scope of the original method, it is transactional. So a) keep a separate mark from ReadOnly for RequiresTransaction, b) do a graph copy for the candidate changes, c) send the message to the copy, d) if a WriteSemaphore is accessed, auto enter a copy transaction, send modificationDetected: to the eventualContext, mark it transactional and next invocation, enter an initial copy transaction and rollback: on Exception.</div><div dir="auto"><br></div>For the HymnTrinitySessionProtocol, have 3 replicationStrategies:<div dir="auto">• Dedicated<caret></caret>OneAtATime • <1 conn each as primary, reserve, inMaintenance></div><div dir="auto">• FirstPastThePost • <concurrent replicated comms></div><div dir="auto">• Quorum • <promises resolved from a minimum quorum of connections></div><br><div dir="auto"><div dir="auto"><br></div><div class="protonmail_signature_block" id="protonmail_signature_block"><div>••• rabbit ❤️‍🔥🐰</div></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div>  <div><br></div><div><br></div>On Fri, Jul 14, 2023 at 12:24, rabbit <<a class="" href="mailto:On Fri, Jul 14, 2023 at 12:24, rabbit <<a href=">rabbit@callistohouse.org</a>> wrote:<blockquote type="cite" class="protonmail_quote">    <div dir="auto">I’ve got my desktop up and running and so I attempted to define a WriteSemaphore, owned by the NearRef, by securedHash. This ensures the obj has the same securedHash and resolution, that’s asking for a #critical:for:. #critical:for:. It’s actual Semaphore is then #critical: with a block that will check obj isReadOnly,  then beWritableObject, then run the method that modifies, then #ensure: obj beReadOnly. The idea for type heuristics is that a first attempt at a message send, by a Neighbor or Far ref occurs without the WriteSemaphore on first attempt and if the ModificationException occurs, mark the subjects ClassType’s MessageRecord as ReadOnly := false, then eventually send to its NearRef, which will attempt its message send and get a ModificationException and learn itself ReadOnly = false. As well, use the subject’s WriteSemaphore to make a real modification. Add this selector to a class side method #writableMethods. Now we know.</div><div><br></div><div id="protonmail_signature_block" class="protonmail_signature_block"><div>••• rabbit ❤️‍🔥🐰</div></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div>  <div><br></div><div><br></div>On Thu, Jul 13, 2023 at 10:31, rabbit <<a href="mailto:On Thu, Jul 13, 2023 at 10:31, rabbit <<a href=" class="">rabbit@callistohouse.org</a>> wrote:<blockquote class="protonmail_quote" type="cite">    <div dir="auto">I fried my laptop by spilling my ready to drink café con leche all over. Elbows and precarious places! My desktop is unplugged so I’ll get that up.</div><div dir="auto"><br></div>In the meantime, I’ve been getting super high and doing the art. Here are my notes…who is saying I am in any way diminished? I do my best work, in the Spirit.<div dir="auto"><br></div><div dir="auto">•••</div><div dir="auto"><br></div><div dir="auto"><div dir="auto">••• Kittens •••</div><div dir="auto">KittyOracle</div><div dir="auto">KittyCommander</div><div dir="auto">KittyLitter</div><div dir="auto">BoxOfKittens <FarIntroducer></div><div dir="auto"><br></div><div dir="auto">A Neighbor learns. As immediate data access is allowed from a shared memory object, it is ReadOnly. If a ModificationException occurs, change the Stub method to forwarding. Determine whether to flip the Neighbor to a NearPromise.</div><div dir="auto">Graph walking for #passByCopy of #passByReference, w Neighbor substitution.</div><div dir="auto">#securedHash of #identityHash is OID in LocalKittyOracle’s etSpace</div><div dir="auto">#oidHash is the 2nd hash of the securedHash, identity in Neighbors, Far.</div><div dir="auto">WriteSemaphore waits on Oracle’s registered object’s Semaphore for critical access, inside object is marked Writable, modifications made and back to ReadOnly.</div><div dir="auto"><br></div><div dir="auto">••• Networking •••</div><div dir="auto">eventualContext with Question out to the remote pending Send. The 4th Estate, a 4th wire.</div><div dir="auto"><br></div><div dir="auto">Each Protocol describes </div><div dir="auto">• set of MessageHeaders</div><div dir="auto">• name</div><div dir="auto">• oid</div><div dir="auto">• stateMachine </div><div dir="auto">• sending / processing protocol</div><div dir="auto">• Plugs into GateKeeper</div><div dir="auto">•••> Anonymous Classes <Unknown> can convert between from a ClassType, to a Tuple and back, with Stub generation</div><div dir="auto"><br></div><div dir="auto"><</div><div dir="auto">    #ClassType</div><div dir="auto">    !! <span style="color: var(--text-color);"><ClassName</span></div><div dir="auto">        !! ASN1UTF8String</div><div dir="auto">        !! Exportable {true|false}>></div><div dir="auto">    !!<span style="color: var(--text-color);"> <IVarRecords </span></div><div dir="auto">        !! #SequenceOfIVarRecord </div><div dir="auto">        !! <IVarRecord</div><div dir="auto">            !! IVarName</div><div dir="auto">            !! ClassTypeName</div><div dir="auto">            !! ASN1Type>></div>    !!<span style="color: var(--text-color);"> <MethodRecords</span><div dir="auto">        !! #SequenceOfMethodRecord</div><div dir="auto">        !! <#MethodRecord</div><div dir="auto">                !! MethodName</div><div dir="auto">                !! ReturnClassTypeName</div><div dir="auto">                !! ReadOnly></div><div dir="auto">    ></div><div dir="auto">></div><div dir="auto"><br></div><div dir="auto">••• Hierarchy •••</div><div dir="auto">Whisper • generalized & pluggable with a Protocol.</div><div dir="auto">• <Gate </div><div dir="auto">    !! Gozer </div><div dir="auto">    !! GateKeeper </div><div dir="auto">    !! KeyMaster></div><div dir="auto">Layer5Session</div><div dir="auto">• EndpointThunks</div><div dir="auto">•••> InMemoryThunk</div><div dir="auto">•••> SocketThunk</div><div dir="auto">•••> PipeThunk</div><div dir="auto">•••> Bluetooth</div><div dir="auto">•••> RF Transceiver </div><div dir="auto">•••> SATCOM…</div><div dir="auto">• SessionProtocols to rendezvous with EncryptionProtocols</div><div dir="auto">    •••> InMemory</div><div dir="auto">    •••> Clear</div><div dir="auto">    •••> PARROTTalk v3.6, v3.7, v3.9</div><div dir="auto">    •••> SSL</div><div dir="auto">    •••> SSH</div><div dir="auto">    •••> Signal, one day</div><div dir="auto">    •••> SP-ADS</div><div dir="auto"><br></div><div dir="auto">Layer6Presentation • Presentation layer manages stack and installs correct encoderThunk, using a Session.</div><div dir="auto">• Far</div><div dir="auto">• Hymn</div><div dir="auto">• Kafka</div><div dir="auto"><br></div><div dir="auto">•••</div><div dir="auto"><br></div><div dir="auto">    Don’t be afraid to start over again.</div><div dir="auto">    This time you’re not starting from scratch.</div><div dir="auto">    You’re starting from experience.</div><div dir="auto"><br></div><div dir="auto">•••</div><div dir="auto"><br></div><div dir="auto">Crypto Feature list:</div><div dir="auto">•••> All Promises <Near ! Neighbor ! Far></div><div dir="auto">•••> BoxOfKittens <FarIntroducer> </div><div dir="auto">•••••••> Kitty <NeighborIntroducer></div><div dir="auto">•••••••> KittyOracle</div><div dir="auto">•••••••> KittyCommander</div><div dir="auto">•••••••> KittyUI</div><div dir="auto">•••••••> KittyLitter, per HyperCore</div><div dir="auto">•••> All of ParrotTalk <v3.6 ! v3.7 ! v3.9></div><div dir="auto">•••> Whisper framework</div><div dir="auto">•••> ProtocolStateCompiler</div><div dir="auto">•••> TraceMonitor</div><div dir="auto">•••> ELinda</div><div dir="auto">•••> robust security assets</div><div dir="auto">•••••••> Ciphers (symmetric and asymmetric)</div><div dir="auto">•••••••> HashFunctions</div><div dir="auto">•••••••> SecureRandoms</div><div dir="auto">•••••••> Key Exchanges</div><div dir="auto">•••••••> Signatures</div><div dir="auto">•••••••> security encodings </div><div dir="auto"><FEC !! Archive !! PBE !! PasswordExtenders></div><div dir="auto">•••••••> ASN1 Streams, with substitution ability during graph walking.</div><div dir="auto">•••> Networking Protocols:</div><div dir="auto">•••••••> Whisper <Framework></div><div dir="auto"><br></div><div dir="auto">•••••••> Hymn <Layer6></div><div dir="auto">•••••••> Far <Layer 6></div><div dir="auto">•••••••> Kafka <Layer 6></div><div dir="auto"><br></div><div dir="auto">•••••••> InMemory <Layer 5></div><div dir="auto">•••••••> InDaClear <Layer 5></div><div dir="auto">•••••••> EParrotTalk <Layer 5></div><div dir="auto">•••••••> SP-ADS <Layer 5></div><div dir="auto">•••••••> SSH <Layer 5></div><div dir="auto">•••••••> SSL <Layer 5></div><div dir="auto">•••••••> Signal <Layer 5></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto"><br></span></div><div dir="auto"><span style="color: var(--text-color);" dir="auto">••• rabbit ❤️‍🔥🐰</span><br></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div>  <div><br></div><div><br></div>On Mon, Jul 10, 2023 at 23:21, rabbit <<a class="" href="mailto:On Mon, Jul 10, 2023 at 23:21, rabbit <<a href=">rabbit@callistohouse.org</a>> wrote:<blockquote type="cite" class="protonmail_quote">    <div dir="auto">I’m also going to offer access to the eventualContext of a Promise, whether Local, Neighbot or Far. Offer Revolution and ping / status, remote event registration on the EventuaMessageSend. </div><div dir="auto"><br></div><div dir="auto">With readOnlyMarks added to the AnonymousStructure encoded object, #passByCopy we have:</div><div dir="auto"><br></div><div dir="auto">     <<span dir="auto" style="color: var(--text-color);">className !! IVarsNames !! ASN1TypeDescription !!  MethodNames !!  ReadOnlyMarks>, Object serialized by this ASN1>, 6 arity.</span></div><div dir="auto"><span dir="auto" style="color: var(--text-color);"><br></span></div><div dir="auto"><span dir="auto" style="color: var(--text-color);">With direct read access to a local kitty Near access to cached / copied data, when a method not marked as readOnly is sent remotely to a different kitty cat, I will flip the “Near Access” to cache data to off, thus converting the Near reference to the cached data into a NearPromise, queuing access in the msgBuffer of this sort of Promise, until completion of the write, depending on policy. </span></div><div dir="auto"><span dir="auto" style="color: var(--text-color);"><br></span></div><div dir="auto"><span dir="auto" style="color: var(--text-color);">I’d love to read about #beReadOnly but I cannot find it. I’d also like to have the vm send eventual events when state changes, like <self changed: iVarName>, thus triggerEvent:. With a BeSilent, this feature could be turned on and off.</span></div><div><br></div><div id="protonmail_signature_block" class="protonmail_signature_block"><div>••• rabbit ❤️‍🔥🐰</div></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div>  <div><br></div><div><br></div>On Mon, Jul 10, 2023 at 22:25, rabbit via Cuis-dev <<a href="mailto:On Mon, Jul 10, 2023 at 22:25, rabbit via Cuis-dev <<a href=" class="">cuis-dev@lists.cuis.st</a>> wrote:<blockquote class="protonmail_quote" type="cite">    <div dir="auto">Well it’s been a weekend. At one point I was starting the BoxOfKittens and the image froze uninterruptably. Heh. It not freezing but I’ve tangled something. I’ve been engaged in very aggressive sculpting and I totally lost it along my way. What would I say? Some highlights…</div><div dir="auto"><br></div><div dir="auto">• added #when:then: to ProtoObject to do Linda tuple matching of the whenTestTuple then: runs the thenReactor. And added Linda protocol there too, so any objects can do tuple matching. </div><div dir="auto">•••> arity</div><div dir="auto">•••> Linda match: converts any object to a tuple of its fields, then match:s with the test tuple.</div>• mass conversion of what was Session hierarchy to Gozer.<div dir="auto">• defining a ClassType to describe a <class name !! method names !! readOnlyMarks> (IVars go into a tuple, methods into a ClassType. I’m going to use one of the Available types to pass an anonymous object, along with ASN1 string notation of structure of the Type, a method interface and the object serialized all. So Java and such can talk it with ASN1. Ubiquitous.</div><div dir="auto"><br></div><div dir="auto"><className !! IVarsNames !! ASN1TypeDescription !!  MethodNames !!  Object serialized by this ASN1>, 5 arity.<br><div dir="auto"><br></div><div dir="auto">I like building analogs and describing a story, BoxOfKittens :) , so for teleport comms it’s GhostBusters! Session is Gozer, there are many that come through a Gate, the Server. These are not at all different between different uses. They’re invariant in class and operations, only difference is the GateKeeper, a different one for each different Protocol, ParrotTalk, SSL, SSH, Signal, TLS 1.2. Whisper, Far, Probe, and now InMemory and a #Clear protocol and GateKeeper. Every Protocol of communication has a unique GateaKeeper. I’m hoping to unify all Protocols ti use the existing Gate and Gozer and KeyMaster, though a different KeyMaster is possible.</div><div dir="auto"><br></div><div dir="auto">The opening and bringing forth another GozerStayPuff is the obligation of the GateKeeper, the Operation classes. ParrotTalk v3.6, v3.7, v3.9 all have different categories, whith their protocol rendezvous messages, carefully defined in ASN1.</div><div dir="auto"><br></div><div dir="auto">There are also Sessions, GateKeepers, in layer 5 <ParrotTalks, InMemory> and different keepers in layer 6: <Far, NeighborGateKeeper, Hymn>. </div><div dir="auto"><br></div><div dir="auto">Hymn will have Gozers to establish replication and bridging. It also will use group protocol to share encryption for replication. This leads to collaboration. We will explore ideas of dynamic demand access multiple access with  establishing collaboration groups called a Hymn. As concurrent resources are gathered, Singers can offer resources to solve problems through parallelism. Audience participation. Hymn conducting all the way from the Sisters to the Orchestra to the Choir. Kittens the whole lot of em.</div><div dir="auto"><br></div><div dir="auto">We shall see.<br><div><br></div><div class="protonmail_signature_block" id="protonmail_signature_block"><div>••• rabbit ❤️‍🔥🐰</div></div> <div class="signature_br" contenteditable="false"><br></div><div class="signature_br" contenteditable="false"><br></div>  <div><br></div><div><br></div>On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <<a class="" href="mailto:On Sun, Jul 9, 2023 at 11:55, rabbit via Cuis-dev <<a href=">cuis-dev@lists.cuis.st</a>> wrote:<blockquote type="cite" class="protonmail_quote">




    <p>Hey, I am a touch frustrated. Recovered with <49>. The code
      I wrote to generate classes and methods has been corrupting my
      image, or rather mucking to the changes. I was having  old code
      versions being loaded and breaking bad. I was publishing a lot of
      garbage because when running the BoxOfKittens, I was generating
      several SharedNears, now called Neighbors. This subclass
      generation and the method compilation is being done it the
      following methods...I am just going to leave it turned off for now
      and stay focused on my objective. It is an example of corruption
      occurring, if that helps anyone.  If one could tell me how to
      better generate these artifacts, that would be outstanding!•
    </p>
    <pre cols="72" class="moz-signature">•••
</pre>
    <p></p>
    <p>The #buildOnClass is called from a class creation method<br>
    </p>
    <blockquote>
      <p>buildOnClass: eClazz<br>
        <br>
            |refClass |<br>
            refClass := self stubClass<br>
                    subclass: (eClazz name, 'Stub') asSymbol<br>
                    instanceVariableNames: ''<br>
                    classVariableNames: ''<br>
                    poolDictionaries: ''<br>
                    category: self userClassCategoryString.<br>
        <br>
            "Copy all methods, up to Object, to the new refClass, with
        redirectMessage forwarding."<br>
            self copyMethodsToClass: refClass fromClass: eClazz
        upToClass: Object.<br>
        <br>
            ^ refClass <br>
      </p>
    </blockquote>
    <blockquote>
      <pre cols="72" class="moz-signature">•••</pre>
    </blockquote>
    <blockquote>copyMethodsToClass: refClass fromClass: valueClazz
      upToClass: rootClass<br>
    </blockquote>
    <blockquote>
      <p><br>
            | arguments classes newMethodString |<br>
            "Collect classes to contribute message protocol."<br>
            classes := valueClazz allSuperclasses select: [ :clazz |
        (Object ~~ rootClass) and: [ Object inheritsFrom: clazz]  ].<br>
        <br>
            "contribute message protocols."<br>
            classes do: [:thisClazz | <br>
                thisClazz methodDictionary keysAndValuesDo: [:selector
        :method | <br>
                    arguments := method tempNames first: method numArgs.<br>
                    newMethodString := self buildForwardingMethod:
        selector contents arguments: arguments.<br>
                    Compiler <br>
                        compile: newMethodString<br>
                        environment: refClass environment <br>
                        notifying: nil <br>
                        trailer: method trailer <br>
                        ifFail: [nil]]].<br>
      </p>
      <pre cols="72" class="moz-signature">•••</pre>
      buildForwardingMethod: selector arguments: arguments<br>
      <br>
          | argumentString selectorStream |<br>
          argumentString := ((arguments inject: ''writeStream into:
      [:stream :argument | stream nextPutAll: argument, ' ']) contents).<br>
          selectorStream := '' writeStream.<br>
          (selector subStrings: $:) with: arguments do: [:keyword
      :argument | selectorStream nextPutAll: keyword, ': ', argument, '
      '].<br>
          ^ selectorStream contents, '<br>
      <br>
               ^self  redirectMessage: (Message selector: ', selector
      asSymbol printString, ' arguments: #{', argumentString, '}).'<br>
    </blockquote>
    Alright then,<br>
    <pre cols="72" class="moz-signature">--
••• rabbit ❤️‍🔥🐰</pre>


</blockquote></div></div></blockquote></blockquote></div></blockquote></blockquote></div></body></html>