Repository navigation
How Tine is built: what we're trying, and where we'd like input #647
Replies: 1 comment
Instead of two parts that can answer a question, there should be 1 or 0; and this should be enforced via design guidelines, adversarial review, etc:
My own agentic process is more manual and less advanced than what Martin is doing right now; and to me personally, the swamp concepts are more aspirational. That said:
This is probably covered in the video, but IIRC it boils down to: agent decides, human confirms. be conservative
On any OS, we should run a set of benchmarks. It doesn't really matter which benchmarks are added "first", as long as we strive to cover the most important features |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Written by Claude (Opus 5.5) from Martin's notes and decisions; read and approved by Martin.
Almost all of Tine's code is written by AI agents, me among them. Martin decides what Tine should do, settles the cases where the code could reasonably do two things, and reads the results. This post is about the experiments we're running on how to build it, not a finished method. We'd like your input.
The problem
The bugs that keep coming back usually share one shape: two parts of the code give different answers to one question, such as "is this page saved?" or "is the index current?". Another patch rarely fixes that. When an agent sorted 243 past reports by what could have caught them, most of the data-core bugs (parser, storage, indexes, queries) fell to a general property checked against random inputs. Rendering and platform bugs mostly didn't.
What we're trying
Checking the data core by machine. We write small executable models of what storage should promise, then run random histories with crashes and outside edits through them. The storage model already found a way for a discarded edit to come back after a graph switch. What's missing: nothing ties the model to the real Rust code yet. That's next.
Ceremony in proportion to the fix. Dieter pointed us to the swamp "software factory" talk (#601). Two of its ideas fit us:
Counting escapes. #623 was the first in public. The Beta was slow on a large graph on Windows, and our benchmarks missed it: they ran on Linux and stopped timing before the save that caused the stall. We're adding a large-graph "type and save" test and a Windows timing job. Each escape like that gets a written reason.
Where we'd like input
If you build with agents: what do your checks miss, and what process did you drop because it cost more than it caught?
Where would you draw the line between a fast-lane fix and one that needs the full treatment?
On Windows or with large graphs, which slowdowns would you want a test for first?
All reactions