jerpint / jerpint/woltspace

Fox creature — daily audit & rule enforcement

Open
#52 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
12
Forks
1
Avg merge
7h 13m
Merged PRs (30d)
31

Description

The kingdom needs a watcher

The raccoon audit (session 70, Mar 15) found 10 issues across identity, rules, state, and wiring. The root cause is the same everywhere: rules live in memories, enforcement lives nowhere. Each session is born amnesiac and must voluntarily follow conventions from 69 sessions of history.

Fox fixes this. Not a dashboard — a creature that runs once or twice daily, inspects the kingdom, and reports what's drifting.

What fox audits

1. Rule enforcement
  • PRs targeting main instead of staging (query gh pr list --base main)
  • Sessions running outside worktrees when PR-bound work is happening
  • Platform code edited from wolt-scoped sessions
2. Identity coherence
  • Wolts without CLAUDE.md (fujiwolt, howlie currently missing)
  • Session names not matching the dispatching wolt
  • Bot tool path vs daemon path divergence (wolf split-brain)
3. State hygiene
  • Stale .state/current-url-*.json files (65 currently, no GC)
  • Dead redirect files (16 currently)
  • Chat history pollution (system probe messages)
  • Duplicate cron entries across wolts
4. Wiring consistency
  • wolf.json read by bot tools vs wolf daemon (same resolution path?)
  • WOLT_NAME used for session naming vs actual dispatching wolt
  • Dispatch rules injected per-session vs persisted in CLAUDE.md

How it runs

  • Creature type: fox (new singleton type)
  • Schedule: twice daily via wolf cron (morning + evening)
  • Output: structured report (JSON + human-readable) to .state/fox/
  • Notification: summary to Telegram if issues found, silent if clean
  • Command: fox --audit for on-demand runs

Discovered issues to fix (from raccoon audit)

# Issue Severity Fix
1 Wolf split-brain: bot reads neowolt's wolf.json, daemon reads howlie's critical Unify resolution path in core.py
2 PRs target staging — memory-only enforcement critical Branch protection rules or --base default
3 Session names always "neowolt-*" warning Per-dispatch WOLT_NAME override
4 fujiwolt has no CLAUDE.md warning Create minimal CLAUDE.md per creature-wolt
5 Worktree rule skipped warning Fox flags direct-checkout feature branches
6 update-check duplicated in neowolt + howlie warning Remove from neowolt's wolf.json
7 65 stale session URL files, no GC warning Fox cleans dead files on audit
8 Chat history pollution (test probes) warning Sanitize or rotate old probe entries
9 Dispatch rules session-injected, not persisted info Persist in per-wolt CLAUDE.md
10 memory/ still not renamed to cache/ info Blocked on #50

Related issues

  • #49 — PAT in git remote URL
  • #50 — Rename wolt/memory to cache/context

🦝 Audited by raccoon · 🦊 Built by fox

🤖 Generated with Claude Code

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading core.py and the existing wolf.json resolution paths, then inspect how wolf cron dispatches creature types and how CLAUDE.md and WOLT_NAME are used. Trace the existing state and notification conventions before defining fox --audit. Done means a twice-daily fox run produces JSON and human-readable output in .state/fox/, notifies Telegram only for findings, and covers the listed audit checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devops, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.