Files
CyberGril/deploy/cybergril-hel874-8360.service.example
T
zonggongandmultica-agent e291058754 HEL-882 rework: execution-table caps become real hard gates at the wire, SDK hidden retries and mid-add failures recover without loss, the 8360 release package runs offline, and the HEL-874 embedding evidence is corrected - every real provider exit (create/dialogue/life/gist/judgment/growth/proactive phrasing + mem0's internal extraction LLM) now persistently pre-allocates request count (per-category daily + one-shot totals in request_usage/budget_total, BEGIN IMMEDIATE) and a conservative token estimate before sending, refuses at the tightest cap (BudgetStop, no more downgrade-and-keep-calling) and survives restarts; known usage settles to actual, unknown/disconnect/failure keeps the full reservation; ledger guards gain per-day tops (embed_daily/llm_daily) and verify_ledger_authority rejects a fresh file bypassing the frozen 498/500 prefix; the mem0 SDK client's hidden OpenAI retries are disabled (max_retries=0) so every actual send is gated and answered failures (even 5xx) settle as used with only httpx.ConnectError-grade unsent requests released; embed refusals the SDK swallows into empty adds are re-raised as budget errors so the batch re-queues without burning an attempt and resumes when the cap returns, add_group resumes at vector-store level (src_group anchors: only missing rows resent, crash/restart/concurrency never duplicate), sem coverage is per-backend (stub batches no longer block a real rebuild, real done batches never resend) with backend-scoped batch keys; the release package is offline-executable: fresh-dir git clone, cybergril service account, PYTHONPATH in the unit so the lock-only venv imports the product, shipped caps explicitly 0 (=refuse by design until approved), deploy/mem0-stack.lock + accurate 3.11 wheel gap with a no-download path (hel857-venv is 3.10; never present stub/FTS as the real memory experience), and tools/check_release_offline_hel882.py verifies checkout/import/health/fail-closed/approved-run/data-preservation on loopback with echo stand-ins; evidence corrected per manager review: docs/rework/hel874/erratum-hel882.json + README appendix record that e978e87's verification did real local embeddings from cache (provable lower bound 12, exact total unrecoverable, temp sandbox gone) while zero-real-LLM/zero-download/zero-outbound stand, old JSONs and authoritative ledgers untouched, and tools/verify_mem0_real_hel874.py now installs the deterministic 512-dim stand-in before TextEmbedding construction plus non-loopback socket rejection (zero model loads) with final_embed_rows persisted before temp cleanup; verification: 272 python tests pass on 3.11.16 venv + requirements.lock offline (16 new: manager api repro blocked with 0 provider calls, sdk repro 1-HTTP/max_retries=0/llm_ops=1, mid-add swallow requeued-then-resumed, resume-no-duplicate, stub-to-mem0 rebuild, daily embed cap, unified mem0-LLM gate, authority refusal, restart-persistent counters, tightest-constraint settle/release), ruff clean (src/tests/tools), web tsc + 42 vitest + build via npm ci --offline, pinned-install deterministic re-run 12/12, manager review scripts re-run evidence attached in delivery, dual-target requirement checks 4/4 with handoff-HEL-882.json; zero real calls, zero real embeddings, zero non-loopback outbound, authoritative ledgers and freezes untouched, not deployed, PR not merged, no visual changes
Co-authored-by: multica-agent <github@multica.ai>
2026-10-26 23:20:18 +08:00

41 lines
1.6 KiB
Plaintext

# Review/install by 总工 only. HEL-874/882 isolated unified candidate, port 8360.
# Fresh EMPTY data dir — never the 8300/8310/8320/8340/8350 dirs, never demo data.
# CYBERGRIL_SEMANTIC stays stub until Part-B budget approval AND the pinned mem0
# stack wheels are staged for 3.11 (deploy/hel874-release.md §4); not presenting a
# stub/FTS fallback as the user's real memory experience.
# HEL-882: PYTHONPATH makes the product importable from the requirements.lock-only
# venv (deps only, no editable install); budget request caps ship at 0 = refuse
# every real provider exit until the manager writes approved numbers (see
# config/models.yaml budget block + docs/budget-plan-hel874.md).
[Unit]
Description=CyberGril HEL-874 unified candidate (isolated, R4-assembly)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=cybergril
Group=cybergril
WorkingDirectory=/opt/cybergril-hel874/current
Environment=PYTHONPATH=/opt/cybergril-hel874/current/src
Environment=CYBERGRIL_DB=/opt/cybergril-hel874/data/companion.db
Environment=CYBERGRIL_MODELS=/opt/cybergril-hel874/current/config/models.yaml
Environment=CYBERGRIL_WEB=/opt/cybergril-hel874/current/web/dist
Environment=CYBERGRIL_R2_ENABLED=1
Environment=CYBERGRIL_SEMANTIC=stub
Environment=CYBERGRIL_HOST=0.0.0.0
Environment=CYBERGRIL_PORT=8360
ExecStart=/opt/cybergril-hel874/current/.venv311/bin/python -m cybergril.api
Restart=on-failure
RestartSec=3
TimeoutStopSec=15
UMask=0077
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/cybergril-hel874/data
[Install]
WantedBy=multi-user.target