Commit Graph

4 Commits

Author SHA1 Message Date
Ezra
2e64b160b5 [KAIZEN] Harden retro scheduling, chunking, and tests (#349)
- Add Kaizen Retro to cron/jobs.json with explicit local model/provider
- Add Telegram message chunking for reports approaching the 4096-char limit
- Fix classify_issue_type false positives on short substrings (ci in cleanup)
- Add 28 unit tests covering classification, max-attempts detection,
  suggestion generation, report formatting, and Telegram chunking
2026-04-07 15:58:58 +00:00
Ezra
6210e74af9 feat: Muda Audit — fleet waste elimination (#350)
Implements muda-audit.sh to measure the 7 wastes across the fleet:
1. Overproduction — agent issues created vs closed
2. Waiting — rate-limited API attempts from loop logs
3. Transport — issues closed-and-redirected
4. Overprocessing — PR diff size outliers (>500 lines for non-epics)
5. Inventory — issues open >30 days with no activity
6. Motion — git clone/rebase operations per issue from logs
7. Defects — PRs closed without merge vs merged

- fleet/muda_audit.py: core audit logic using gitea_client.py
- fleet/muda-audit.sh: thin bash wrapper
- cron/jobs.json: add Hermes cron job for weekly Sunday 21:00 runs
- cron/muda-audit.crontab: raw crontab snippet for host-level scheduling

Posts waste report to Telegram with week-over-week trends and top 3
elimination suggestions.

Part of Epic: #345
Closes: #350
2026-04-07 15:13:03 +00:00
d5f8647ce5 [sovereignty] Cut the Cloud Umbilical — Close #94
THE BUG
=======
Issue #94 flagged: the active config's fallback_model pointed to
Google Gemini cloud. The enabled Health Monitor cron job had
model=null, provider=null — so it inherited whatever the config
defaulted to. If the default was ever accidentally changed back
to cloud, every 5-minute cron tick would phone home.

THE FIX
=======

config.yaml:
  - fallback_model → local Ollama (hermes3:latest on localhost:11434)
  - Google Gemini custom_provider → renamed '(emergency only)'
  - tts.openai.model → disabled (use edge TTS locally)

cron/jobs.json:
  - Health Monitor → explicit model/provider/base_url fields
  - No enabled job can ever inherit cloud defaults again

tests/test_sovereignty_enforcement.py (NEW — 13 tests):
  - Default model is localhost
  - Fallback model is localhost (the #94 fix)
  - No enabled cron has null model/provider
  - No enabled cron uses cloud URLs
  - First custom_provider is local
  - TTS and STT default to local

tests/test_local_runtime_defaults.py (UPDATED):
  - Now asserts fallback is Ollama, not Gemini

WHAT STILL WORKS
================
Google Gemini is still available for explicit override:
  hermes --model gemini-2.5-pro
It's just not automatic anymore. You have to ask for it.

FULL SUITE
==========
36/36 pass. Zero regressions.

Closes #94

Signed-off-by: gemini <gemini@hermes.local>
2026-03-31 08:29:58 -04:00
Alexander Whitestone
341c85381c feat: Timmy's sovereign config — soul, memories, skins, playbooks
Migrated from hermes/hermes-config (now archived).

Contents:
  SOUL.md — Inscription 1, the immutable conscience
  config.yaml — live Hermes harness configuration
  memories/ — persistent agent memory + user profile
  skins/ — timmy.yaml + trismegistus.yaml personalities
  playbooks/ — 6 specialist agent configs
  cron/ — scheduled job definitions
  docs/design-log/ — historical design decisions
  FALSEWORK.md — API cost management strategy
  channel_directory.json — platform channel mappings

Applied as side-car to Hermes harness. No hacking on the harness.
2026-03-24 17:45:12 -04:00