sharpy / analysis

design philosophy

Commands exist to make sharpy's behaviour legible and terminal-friendly. Every command has a single job, a declared access level, and a predictable tool budget. The framework optimizes for recoverability (nothing silently lost), reversibility (destructive ops gated), and cost transparency (you can plan around a budget).

Categories are not arbitrary. They map to state-machine position (lifecycle), classification vs. action (persistence), meta/hygiene (maintenance), multi-conversation coordination (orchestration), and the one external workflow heavy enough to earn its own category (review).

conversation state machine

                               /kill  (auto /reap if UNPERSISTED)
             ┌───────────────────────────────────▶ DEAD ◀─────────────┐
             │                          /kill!  (bypass)              │
   ALIVE ────┼── /rite     (classify, read-only)                      │
             │                                                        │
             └── /reap     (act on /rite; auto-halts on low-conf)     │
                                                                      │
                                                            /resurrect
                                                    (spawns NEW convo;
                                                      self-deletes DEAD)
  
fromviatonotes
ALIVE/killDEAD or ALIVEIf UNPERSISTED → auto-/reap; halts on low-conf, stays ALIVE. If clean → DEAD.
ALIVE/kill!DEADNo checks. /rite runs for the record only.
ALIVE/riteALIVERead-only classification.
ALIVE/reapALIVEActs on /rite output with sane defaults; halts on low-conf.
DEAD/resurrectALIVE' (new convo)Spawns remaining work in a fresh conv; self-deletes the corpse. Alias: /undead.
DEADanything elseDEADReplies DEAD.

access levels

levelscopecommandsexamples of mutation
ROnone (reports only)/rite, /audit, /commandsnone
RW-convconversation state only/kill, /kill!, /resurrectflips ALIVE↔DEAD; self-delete JS
RW-projectproject files, new convos/spawn, /fanout, /meteorite, /review, /profilecreates convos; writes agent-project-profile.md
RW-memagent memory/compact, /transcendedit/erase/compact memory entries
RW-project+memproject files + memory/inhalewrites 4 mirror files + refreshes memory
RW-project/repo/memeverything except destructive defaults/reapact on UNPERSISTED with sane defaults; gated on confidence and destructiveness

budget reference

Budget = tool calls. N = worker count.

commandtypicalworstscaling
/spawn1–22fixed
/rite2–3 light / 6–8 full8fixed
/reapN×1–3proportionalO(items)
/kill2–68 (if auto-reap)fixed + O(items)
/kill!2–44fixed
/resurrect3–66fixed
/compact4–812O(memory entries)
/transcend15–3040+O(stale convos)
/inhale8–1214fixed
/audit8–1214fixed
/commands4–66fixed
/profile2–55fixed
/fanoutN×5+3O(workers)
/meteoriteN×5+3O(convos in window)
/review10–25 per PRN×5 + 20O(comments, workers)

command relationships

/kill

  • runs /rite may auto-run /reap
  • bypassed by /kill!

/resurrect

  • wraps /spawn (hands off remaining work)
  • alias: /undead

/meteorite

  • alias for /fanout rite --since=90
  • per-worker: runs /rite

/fanout

  • each worker: mandatory dual-cave (anthro + open)
  • harvester: /spawn-ed fresh conv (/review pattern)

/review

  • internally uses /fanout semantics for workers
  • harvester = fresh /spawn-ed conv

/inhale

  • reads agent-project-profile.md (set via /profile)
  • rewrites Dust mirrors on every run

/profile

  • edits agent-project-profile.md; effect applied by next /inhale

/audit

  • includes /commands structural check

/commands

  • --profile flag: annotate per-project filters

decision flows

I want to end this conversation.
Run /kill. If UNPERSISTED items exist, /kill will auto-/reap them with sane defaults and die. If /reap halts on low-confidence items, resolve them, then /kill again. Force-death with /kill!.
I killed a conversation by mistake / need to continue that work.
Run /resurrect (or /undead). It will /spawn a new conversation with the remaining work and self-delete the dead one.
The framework in this project feels stale.
Run /inhale. It pulls canonical files from GH, applies the project profile, and rewrites the Dust mirrors. Memory gets refreshed; PATs get checked.
A command does not apply to this project (policy / scope).
Use /profile omit /command or /profile stub /command "reason". Effect applies on the next /inhale run.
I want to know what changed in memory this month.
Run /audit. It flags memory entries older than 30 days, PAT expiry, and repo HEAD drift.
I need N parallel investigations that don't leak context.
Run /fanout N <task template>. Workers run with dual-cave mandate; harvest with /fanout harvest RUN-XXXX.
PR review pending.
/review #N (single), /review #33 #44 (list), or /review chain (resolve chain from memory).

aliases & triggers

alias / triggerexpands tonotes
/meteorite/fanout rite --since=90Project-wide /rite scan. --self to include current convo.
/undead/resurrectSoft alias. Both accepted.
“spawn new conv”, “hand off”, “continue in a new conv”, “fresh context”/spawnNatural-language triggers when intent is unambiguous.

v1 → v2 changelog

Audit results (2026-04-18). Previous version had 16 commands; current has 14 + 1 alias.

changewhatwhy
removed/ascendRedundant with /rite. Light mode folded into /rite with auto-detection on artifact count.
renamed/undead → /resurrectImperative verb matches rest of framework. /undead kept as soft alias.
added/profileDiscoverable management of agent-project-profile.md (omissions/stubs).
behavior/killAuto-chains /reap (confidence ≥60%, non-destructive) on UNPERSISTED. Saves one round-trip on dirty exits.
behavior/riteAuto-selects light (2–3 calls) vs full (6–8). --deep forces full. Absorbs /ascend.
access/inhaleRO → RW-project+mem. Was mislabeled; writes 4 mirror files and touches memory.
access/reapRW-project/repo → RW-project/repo/mem. Was missing memory scope (erase/edit entries).
budget/compact, /transcend, /review, /reap“varies” replaced with typical-range + scaling notation.
docstate machine sectionExplicit state transitions at the top of agent-commands.md.
doccheatsheet modalClick any command for full spec; keyboard nav.
docanalysis pageThis page.