Track project docs

Remove docs from .gitignore and add AGENTS.md, PLAN.md, CODING_STYLE.md, and RESEARCH.md to the repository.
This commit is contained in:
dirtydishes 2025-12-29 22:10:26 -05:00
parent 7996d00677
commit 82861408e4
5 changed files with 671 additions and 4 deletions

97
CODING_STYLE.md Normal file
View file

@ -0,0 +1,97 @@
# CODING_STYLE.md — TypeScript + Bun Conventions
This document defines **local coding conventions** for this repository.
It exists to reduce drift, improve readability, and keep AI-generated code consistent.
This is **not** a general style guide. It encodes *project-specific preferences*.
---
## Language & Runtime
- **TypeScript only**
- **Bun runtime required**
- Target modern JS (ES2022+)
- Prefer ESM everywhere
No Node-only APIs unless explicitly unavoidable and documented.
---
## File & Module Structure
- One logical responsibility per file.
- Avoid “god files.”
- Prefer small, composable modules over deep inheritance.
### Naming
- Files: `kebab-case.ts`
- Types / interfaces: `PascalCase`
- Functions / variables: `camelCase`
- Constants: `SCREAMING_SNAKE_CASE` (rare)
Examples:
- `flow-packet.ts`
- `compute-aggressor-score.ts`
- `infer-absorption.ts`
---
## Types & Schemas
- **All external data must be validated**
- Use `zod` schemas at boundaries (ingest, API).
- Internal functions may assume validated input.
- Prefer explicit types over inference when crossing module boundaries.
Avoid:
- `any`
- implicit `unknown` without narrowing
---
## Error Handling
- Fail **loudly and explicitly**.
- Prefer throwing typed errors over silent fallbacks.
- Log errors with structured context:
- service name
- event id
- ticker / contract id (if applicable)
Never swallow errors in ingestion or compute paths.
---
## Async & Concurrency
- Prefer async/await over promise chains.
- Streaming > batching when possible.
- Avoid unbounded concurrency.
- Backpressure must be explicit.
Never block the event loop for UI convenience.
---
## Determinism Rules
- No time-based randomness.
- No reliance on implicit system state.
- Given the same inputs, outputs must be identical.
Live execution and replay execution must share code paths.
---
## Comments & Documentation
- Comment **why**, not **what**.
- If logic is subtle, explain assumptions.
- Avoid speculative language in comments.
Good:
// Join window bounded to reduce NBBO misalignment during bursts
Bad:
// This seems to work better