- Add proto files for backtest and market domains - Generate Go code in packages/contracts/gen/go - Generate Dart code in apps/client/lib/src/generated - Add contracts-gen and contracts-check binaries - Update pubspec.yaml with protoc dependencies - Update go.work with new module
38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
# ALT Contracts
|
|
|
|
This package owns ALT application-level protobuf contracts.
|
|
|
|
`proto-socket` remains the transport protocol. ALT messages should be defined here and carried inside proto-socket `PacketBase.data`.
|
|
|
|
Initial contract direction:
|
|
|
|
- additive protobuf changes first
|
|
- explicit handshake/version messages because proto-socket protocol `0.1` does not carry an application version field
|
|
- market-neutral models with Korea market daily bars as the MVP path (including `ListBarsRequest`/`ListBarsResponse` and `GetBacktestResultRequest`/`GetBacktestResultResponse` for the MVP schema)
|
|
- generated clients should be derived from `proto/` sources, not edited by hand
|
|
|
|
## Compatibility
|
|
|
|
- Prefer additive fields and messages.
|
|
- Never renumber existing fields.
|
|
- Reserve removals or semantic rewrites for an explicit version bump.
|
|
|
|
## Transport Boundary
|
|
|
|
- `proto-socket` owns `PacketBase`, heartbeat, nonce, and transport framing.
|
|
- ALT `alt.v1` messages are application payloads carried in `PacketBase.data`.
|
|
|
|
## Codegen
|
|
|
|
Generated outputs are committed source-of-derivation artifacts:
|
|
|
|
- Go: `packages/contracts/gen/go/alt/v1/*.pb.go` (Go module `git.toki-labs.com/toki/alt/packages/contracts/gen/go`).
|
|
- Dart: `apps/client/lib/src/generated/alt/v1/*.pb*.dart`.
|
|
|
|
Commands (run from repository root):
|
|
|
|
- `bin/contracts-gen` regenerates Go and Dart outputs from `proto/`. Requires `protoc`, `protoc-gen-go`, and a working `apps/client` Flutter package (the Dart plugin is invoked via `apps/client/tool/protoc-gen-dart`).
|
|
- `bin/contracts-check` snapshots current generated outputs, regenerates, and fails when the regeneration produces a diff. Used by `bin/test` to keep schema and generated code aligned.
|
|
|
|
Do not hand-edit files under `packages/contracts/gen/` or `apps/client/lib/src/generated/`.
|
|
|