alt/packages/contracts/README.md
toki 88c673d973 feat: contract codegen baseline - add proto code generation for client and server
- 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
2026-05-28 05:29:03 +09:00

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/`.