Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One decision here which seems like a large break from the original pi is that Durable doesn't support branching conversation trees, it only supports conversation forks with ancestry information. Can anyone speculate (or confirm, if you happen to be Armin or Mario) why this is, and if that is necessary for the durable guarantees? The branching conversations are still an immutable data structure, so I can't see why this would be necessary, but perhaps I'm missing something.
 help



I think it’s just for consistency. A fork and a tree navigation are the same operation conceptually. Now, unlike older Pi, a fork is not a copy of the session, it just has a pointer to the older session. The only losses that I can see are: now /resume shows every conversation rewind; and /tree is harder to implement. Neither of those is provided by Durable, so the gap is left to the implementor.

Oh, the tree is still there. It's just flatter :)

In Pinthe coding agent, each transcript entry is parented to another entry. That was actually exceptionally dumb.

If you do /tree in pi, pi needs to flatten that tree into linear, nested conversations.

In Pi Durable, we corrected this mistake. A conversation is a chronological, immutable list of entries. A conversation can be parented to an entry in another conversation, and thus inherits that parent's older conversation entries starting from that entry.

So, exactly the same functionality, just less dumb.


In the coding agent, each transcript entry is parented to another entry. That was actually exceptionally dumb.

Perhaps I'm myopic after working too long with Clojure's data structures, but isn't that exactly what you want? I don't understand the problem with this.

A conversation is a chronological, immutable list of entries. A conversation can be parented to an entry in another conversation, and thus inherits that parent's older conversation entries starting from that entry.

I realise this isn't implemented yet, but does this mean that if I use /tree to go back to a previous point in my conversation, I'll actually get a new conversation rooted at the junction point in the previous conversation? I'm struggling to understand why this is preferable, I use /tree to jump around a lot in my conversations, and it seems like I'd end up with a lot of parallel conversations. With something like /tree, would those conversations be grouped as part of the same conceptual session, or are they then completely independent forks?


A fork is branch right? This is how pi's branches are built.



Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: