Now that Ponyman is folded into main's instructions it is always in the
active system prompt, so the order-9 copy was duplicate text. Several of
its tags (minimal, lazy, shortest) do occur in ordinary development chat,
so _route_playbooks would periodically inject a second copy of guidance
already present verbatim.
Checked before removing: nothing in the codebase referenced the id or the
title. The only other "Ponyman" hit is .github/agents/ponytail-caveman.agent.md,
an unrelated Claude Code agent definition, not a playbook-store record.
Diffed the two texts first. One sentence existed only in the standalone -
"Lazy means efficient, never careless" - and is now on main's PONYMAN MODE
header. The other two gaps were phrasing: the standalone's "stay in this
mode until the user says normal mode" is covered by main's stronger version,
which relaxes only brevity and voice and keeps RULE 1 and RULE 2 in force.
This matches the reference setup, where Ponyman lives in main and no
standalone playbook exists.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ponyman shipped as a standalone reference playbook at order 9, which meant
it almost never ran. _route_playbooks() in synapse/main.py matches a
reference playbook only when one of its tags appears as a literal token in
the user's message, and returns [] otherwise. Its tags are ponyman,
caveman, ponytail, lazy, terse, brevity, minimal, yagni, shortest — words
nobody types when they ask a normal question. So a fresh install advertised
Ponyman mode and then answered in default voice.
Ponyman is a standing instruction, not a topic, so it belongs in the active
system prompt rather than in the routed pool. It is now folded into main's
instructions, and main's goal states the mode is on by default. Both halves
matter: playbook_manager prepends goal to instructions for the active
playbook.
Carries the full text — RULE 1 (destructive commands are always spelled out
in full sentences) and RULE 2 (answer the ask, don't build past it), the
voice and BUILD ladder, the NEVER CUT list, and the "normal mode" escape
that relaxes brevity while leaving both rules in force.
The standalone Ponyman playbook is left in place for now; nothing in the
code references it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The distributed playbooks had drifted well behind the code they run on:
- `main` and `NexusOS Developer` declared no `tools:` at all, so a fresh
install advertised zero tool schemas to Ollama. The tool-calling loop,
the per-playbook allowlist and the action-tool consent gate all shipped
in v1.2.0 with nothing wired to use them. `main` now gets read_file,
list_files and remember; `NexusOS Developer` gets the read/search set.
- `NexusOS Developer` still described the memory extractor as a separate
FastAPI service on port 8001 backed by `synapse/memory/service.py`.
That module is gone; curation runs in-process via curator.py/extractor.py.
It also pointed at `synapse/playbooks/` for playbook data (that is the
store code; the data lives in `data/playbooks/`), described a two-layer
system prompt that is now six layers, and documented a model-selection
heuristic that no longer exists.
- `Ponyman` had a stray third-person "he" left over from the owner scrub.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>