1. Choose the scope
Decide whether version 1 of the software is read-only, or reads and writes. Also decide whether you support only `ENTRY`, or both `ENTRY` and `LIB`.
This page is a practical launch ramp. It summarizes what a team should stabilize in its first days: scope, internal model, reading, writing, and tests. It does not replace the specifications, but it helps avoid scattering effort too early.
Before refining anything, the team should align on terminology, supported formats, and writer behaviour.
Decide whether version 1 of the software is read-only, or reads and writes. Also decide whether you support only `ENTRY`, or both `ENTRY` and `LIB`.
Everything should converge to a single text parser, even when input arrives as `.eevz` or as an already-issued `.eevcz` that you only need to read. Compression is transport, not a second language.
Create clear structures for the library, entries, global blocks, matrices, modes, and `peak_tracks`. Avoid storing raw lines for as long as possible.
The goal of the first sprint is not to cover the entire spec. It is to produce a chain that is reliable, explainable, and testable.
Start with the simplest case. Read the header, open `@entry`, recognize the main blocks, produce an in-memory model, and surface readable diagnostics.
From the internal model, produce stable, deterministic text. The goal is that two identical exports yield the same output.
Once text works, add the `.eevz` layer. Decompress before reading, compress after writing. Keep the same business core.
Mix clean examples, legacy cases, missing fields, and real captures. A parser that only sees perfect examples stays fragile.
When doubt appears, return to three questions: is this public contract, implementation strategy, or capture quality? That separation avoids a lot of confusion in code and product discussions.
A credible first version can correctly read a clearly defined subset of the format, produce honest diagnostics, re-emit deterministic text, and explicitly document what it does not handle yet. That is not a weakness: it is a healthy base.