mirror of
https://github.com/stevologic/spare-cycles.git
synced 2026-11-06 05:16:38 +00:00
Foundation: - 52-test pytest suite: API flows, queue protocol, model matching, recovery paths, karma ordering, node revocation, plus integration tests that run a real uvicorn process for the OpenAI-compatible round-trip (incl. SSE streaming) and drive the actual node_connector.py script end to end - GitHub Actions CI on ubuntu 3.11/3.12 + windows 3.12; front-end syntax check and byte-compile included; README badge - The suite immediately caught a real bug: empty `messages` on /v1/chat/completions slipped past the prompt guard and hung the request for the full 180s timeout instead of returning 400 - fixed Security & fairness: - Sliding-window rate limits on /api/register and /api/recover (recovery codes were brute-forceable at wire speed before); X-Forwarded-For aware, SPARECYCLES_RATELIMIT=off escape hatch - Karma v1: projects whose owners have completed donations are claimed before non-donors at equal tier - boolean, never starves newcomers. Donor badge on marketplace cards. Operability: - Owner tools: PATCH /api/projects/<slug> (edit everything), rotate inference key, cancel queued jobs from the feed - Node revocation (DELETE /api/nodes/<id>) - token dies instantly, donation attribution is preserved via soft delete - /api/health with real DB round-trip for uptime monitors - DEPLOY.md: droplet + systemd + Caddy/nginx (long-poll timeouts), backups, tunnel alternative, connector-as-a-service - MIT LICENSE (swap if you prefer another) Latency & robustness: - Realtime pipeline now wakes on asyncio.Events when jobs arrive/finish instead of 0.4-1s poll ticks; DB remains source of truth with poll fallback - job pickup and answer delivery are effectively instant - Connector: clean SIGTERM shutdown (systemd/docker), UTF-8 stdout on Windows pipes, model select keeps unlisted current values when editing Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
1.1 KiB
Plaintext
22 lines
1.1 KiB
Plaintext
MIT License
|
|
|
|
Copyright (c) 2026 SpareCycles contributors
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
SOFTWARE.
|