docs: consolidate all docs under docs/ — single source of truth
Move issues (01–29) and PRD from .scratch/distributed-inference-network/ into docs/issues/ and docs/. Update ralph_progress.py DEFAULT_PRD path and rewrite docs/agents/issue-tracker.md to reflect the new layout. The distributed_inference_network.egg-info/docs/ mirror is a build artifact already covered by *.egg-info/ in .gitignore — not committed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
26
docs/issues/23-heartbeat-stats.md
Normal file
26
docs/issues/23-heartbeat-stats.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# US-023 — Heartbeat stats payload: request counters + dynamic reassignment response
|
||||
|
||||
Status: done
|
||||
Priority: Medium
|
||||
Stage: Implemented
|
||||
|
||||
## Context
|
||||
|
||||
Node heartbeats are currently empty POSTs. The tracker has no visibility into per-node load,
|
||||
making load balancing and assignment decisions blind. Heartbeats should carry cumulative stats.
|
||||
The heartbeat response channel is also the natural place for the tracker to deliver reassignment
|
||||
instructions without requiring a node restart.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [ ] Heartbeat POST body includes: `total_requests`, `failed_requests`, `queue_depth`, `uptime_seconds`, `status`
|
||||
- [ ] `TorchNodeServer` tracks the three counters with a `threading.Lock`
|
||||
- [ ] Tracker stores the last heartbeat payload per node
|
||||
- [ ] Heartbeat response may include `new_assignment: {model, shard_start, shard_end}`; node logs it
|
||||
- [ ] Stats survive tracker outage: buffered locally, flushed on next successful heartbeat
|
||||
- [ ] `python -m pytest` passes
|
||||
|
||||
## Notes
|
||||
|
||||
Hot-reload (loading a new shard without restart) is deferred to a future story. The response
|
||||
field is wired so trackers can send the signal; nodes log it but don't act yet.
|
||||
Reference in New Issue
Block a user