|
| 1 | +# Improved commit messages for e8bbda18b3e2b9484a15dfab0cc4a7ffa30d4710..HEAD |
| 2 | +# Use: git rebase -i e8bbda18b3e2b9484a15dfab0cc4a7ffa30d4710 |
| 3 | +# Then for each commit, copy the corresponding message below. |
| 4 | + |
| 5 | +================================================================================ |
| 6 | +COMMIT 1: bae4a8f - refactor!: rename roles to FooRole |
| 7 | +================================================================================ |
| 8 | + |
| 9 | +refactor!: rename link endpoint types from Foo to FooRole |
| 10 | + |
| 11 | +Rename the endpoint marker types to clarify they represent roles in a connection: |
| 12 | +- Client -> ClientRole |
| 13 | +- Agent -> AgentRole |
| 14 | +- Conductor -> ConductorRole |
| 15 | +- Untyped -> UntypedRole |
| 16 | + |
| 17 | +This is preparation for separating the concepts of "role" (who I am) from |
| 18 | +"peer" (who I'm talking to) and "link" (the relationship between two sides). |
| 19 | + |
| 20 | +BREAKING CHANGE: All references to Client, Agent, Conductor, Untyped as |
| 21 | +peer types must be updated to ClientRole, AgentRole, etc. |
| 22 | + |
| 23 | +================================================================================ |
| 24 | +COMMIT 2: f9b9a5a - refactor!: remove local role |
| 25 | +================================================================================ |
| 26 | + |
| 27 | +refactor!: remove LocalRole from JrLink trait |
| 28 | + |
| 29 | +The LocalRole associated type on JrLink was redundant - it captured "who am I" |
| 30 | +but that information is already implicit in the link type itself (e.g., |
| 31 | +ClientToAgent implies the local side is a client). |
| 32 | + |
| 33 | +This simplifies the trait and removes unnecessary type parameters from |
| 34 | +connection handling code. |
| 35 | + |
| 36 | +BREAKING CHANGE: JrLink no longer has a LocalRole associated type. |
| 37 | + |
| 38 | +================================================================================ |
| 39 | +COMMIT 3: 4de0fec - refactor!: move RemotePeer to DefaultPeer |
| 40 | +================================================================================ |
| 41 | + |
| 42 | +refactor!: replace RemotePeer with HasDefaultPeer::DefaultPeer |
| 43 | + |
| 44 | +Move the "default peer" concept from JrLink::RemotePeer to a separate |
| 45 | +HasDefaultPeer trait with DefaultPeer associated type. |
| 46 | + |
| 47 | +This separation is important because: |
| 48 | +- Not all links have a single default peer (e.g., ProxyToConductor can |
| 49 | + send to both ClientPeer and AgentPeer) |
| 50 | +- Links that DO have a default peer now explicitly implement HasDefaultPeer |
| 51 | +- The HasPeer<P> trait declares which peers a link can communicate with |
| 52 | + |
| 53 | +BREAKING CHANGE: JrLink::RemotePeer removed; implement HasDefaultPeer instead. |
| 54 | + |
| 55 | +================================================================================ |
| 56 | +COMMIT 4: f3815bc - refactor!: rename Role to Peer |
| 57 | +================================================================================ |
| 58 | + |
| 59 | +refactor!: rename FooRole types to FooPeer |
| 60 | + |
| 61 | +Complete the terminology shift from "role" to "peer": |
| 62 | +- ClientRole -> ClientPeer |
| 63 | +- AgentRole -> AgentPeer |
| 64 | +- ConductorRole -> ConductorPeer |
| 65 | +- UntypedRole -> UntypedPeer |
| 66 | +- JrRole trait -> JrPeer trait |
| 67 | + |
| 68 | +"Peer" better captures what these types represent: the logical destination |
| 69 | +for messages. A peer is "who you're talking to", not "who you are". |
| 70 | + |
| 71 | +BREAKING CHANGE: All FooRole types renamed to FooPeer. |
| 72 | + |
| 73 | +================================================================================ |
| 74 | +COMMIT 5: 24ec6c4 - refactor!: s/role/peer |
| 75 | +================================================================================ |
| 76 | + |
| 77 | +refactor!: update module and documentation references from role to peer |
| 78 | + |
| 79 | +Rename the role module to peer module and update all references: |
| 80 | +- sacp::role:: -> sacp::peer:: |
| 81 | +- role.rs -> peer.rs |
| 82 | +- Doc comments updated to use "peer" terminology |
| 83 | + |
| 84 | +Also updates documentation to use clearer language: |
| 85 | +- "fulfill their role" -> "fulfill their responsibilities" |
| 86 | +- "role-agnostic" -> "link-agnostic" |
| 87 | + |
| 88 | +BREAKING CHANGE: sacp::role module renamed to sacp::peer. |
| 89 | + |
| 90 | +================================================================================ |
| 91 | +COMMIT 6: 1689112 - refactor!: split peer/link modules |
| 92 | +================================================================================ |
| 93 | + |
| 94 | +refactor!: split peer.rs into separate peer and link modules |
| 95 | + |
| 96 | +The peer module was conflating two distinct concepts: |
| 97 | +- Peers: logical message destinations (ClientPeer, AgentPeer, etc.) |
| 98 | +- Links: directional connection types (ClientToAgent, AgentToClient, etc.) |
| 99 | + |
| 100 | +Now split into: |
| 101 | +- peer.rs: JrPeer trait and peer types (ClientPeer, AgentPeer, ConductorPeer) |
| 102 | +- link.rs: JrLink trait, HasDefaultPeer, HasPeer, RemoteStyle, and all |
| 103 | + link types (ClientToAgent, AgentToClient, ProxyToConductor, etc.) |
| 104 | + |
| 105 | +This clarifies the mental model: |
| 106 | +- Links capture the *relationship* between two sides |
| 107 | +- Peers identify *who* you're talking to |
| 108 | + |
| 109 | +BREAKING CHANGE: Link types moved from sacp::peer to sacp::link. |
| 110 | + |
| 111 | +================================================================================ |
| 112 | +COMMIT 7: 48390ea - refactor!: more comments, introduce ProxyPeer |
| 113 | +================================================================================ |
| 114 | + |
| 115 | +refactor!: add ProxyPeer and improve link documentation |
| 116 | + |
| 117 | +Introduce ProxyPeer as a distinct peer type for proxy connections, used by |
| 118 | +ConductorToProxy. Previously this incorrectly used AgentPeer as the default. |
| 119 | + |
| 120 | +Also adds extensive documentation to link types explaining: |
| 121 | +- When each link type should be used |
| 122 | +- Which link types are conductor-internal vs. general purpose |
| 123 | +- The relationship between ConductorToProxy and ClientToAgent |
| 124 | +- How SuccessorMessage routing works |
| 125 | + |
| 126 | +Key documentation additions: |
| 127 | +- ClientToAgent: "Use this when attempting to issue prompts or requests" |
| 128 | +- AgentToClient: "This is used when implementing agents" |
| 129 | +- ConductorTo* links: "Only meant to be used by the conductor itself" |
0 commit comments