Sync meetings every Tuesday and Thursday (10:00 am)
Fast pace - focus on delivering features, not necessarily perfect code.
Pair-work. For each feature/project we have someone who is responsible and someone who is helping (reviewing / being a rubber duck, etc). Can be fine-grain (specific task) but also coarse-grain (the entire project). These two ppl work closely with each other. It’s NOT REQUIRED for all changes to be discussed/reviewed by me, however I’m always happy to provide feedback when needed. The person writing code is encouraged to discuss the code design with the second person prior starting.
Define configuration files and propose project structure (package.json?)
Template for starting new projects.
Agent instructions!
Build
Prepare docker images to build services (JAM-SDK). Ideally we would only need bun + docker to work on services.
Deployment
Starting test networks based on configuration.
Preparation of genesis files
Some basic monitoring to make sure the nodes are up and connected (stdout based or rather some health endpoint or metrics)
Interacting with bootstrap service or creating our own bootstrap service to deploy & upgrade contracts.
Unit testing
Running docker containers for each service to invoke test command.
Integration testing
jammin-sdk framework:
Create type definitions (needed to pass as work items)
Testing setup. We want to be able to write tests that interact with deployed services. So we need to know their ids from deployment step (some configuration need to be written in a local file, or we can have that as storage entry in bootstrap service).
Running tests should be possible multiple times. That means that either we deploy a fresh set of contracts every time or we have a way to rollback some blocks.
We should be able to create some work items, refine them and then test accumulation.
AI agents-workflow first. Focus on providing some AI instructions so that the types can be auto-generated by AI based on rust types for instance.
The point of integration testing is not just to focus on a single service, but rather on service<>service interactions (so we are interested in balance transfers, etc).
Interacting
CLI level for interacting is low priority. We can just have “give arguments/work item as hex” to submit it and get result back. I’d rather have users use GUI for now.
separate web app, but most likely using components heavily from our state viewer / codec, etc.
Initially we should just redirect to these other tools or run them in an iframe, unless it’s going to be extremely difficult.
state-viewer could simply read the state from a running node over RPC (or our custom WebSocket protocol). Alternatively the state can be exchanged using postMessage and an iframe.
Run embedded node and display current block number
Use type definitions from jammin-sdk (testing) to create a generic UI. There should be a place for the user to create a custom components that would be embedded into jammin inspect.
We focus on higher-level information, not on raw bytes (which can be seen in state-viewer, etc).