Andrés Duvvuri

Constantly looking for new ideas. Currently working on agree, a CLI to track schema drift. When I'm not writing code, I'm usually writing music (check me out on Spotify!).


Blog

agree devlog #6

The first end-to-end example run is done. Figured out the diffing approach, dropped git-style line diffing for an expected vs. received format with file and line context. Added a -v flag for details. Merged the branch. Now thinking about next steps and whether to keep Docker.

agree devlog #5

Starting the comparison logic. Hashing source and other schemas into maps, then checking for missing, extra, and incorrect attributes. Results go into a map[MismatchReason][]Mismatch so the output can be filtered by agree_type at the end.

agree devlog #4

Wiring up the conglomeration step that merges all DTOs into one []Entities slice. Each entity already has its source schema separated out, so comparison doesn't require a search pass. Added a Validate() method to guard against nil source before any comparison runs.

agree devlog #3

Decided to use a multimap DTO to move data between the Python parser and Go ingestion layer. Also working through how to run Python and Node through Go, landed on Docker as the solution for now.

agree devlog #2

Working through the main shared data structure that moves between the Python parser and Go CLI core. Settled on named attrs via pydantic for cross-language serialization, and rebuilt the entity model so source schemas are separated out from the start.

agree devlog #1

First pass at the agree visitor is working. It outputs pydantic schemas from source code, though dict and list types aren't parsed yet. Here's what the raw output looks like and where things stand.