The Duty procedure offers the fork it promised (1.4.0) - #8
Merged
Merged
Conversation
"Customize" has said since 1.2.0 that a mechanical condition — a candle close, an indicator, a second asset's price — is a fork. The numbered steps Butler actually walks never said so: step 1 offered a strict binary (a knob, or `judgment` via DCA_ESCALATE) and step 5 ended at "never hand-write the duty's code". So "buy $5k of BTC when the 15m candle closes above $85k" lands on DCA_ESCALATE — an LLM wake every run — instead of the fork that computes it in code for free. - Step 1 splits the leftover condition three ways: a knob, a fork when the condition is mechanical, `judgment` only when it needs a brain. - Step 5 keeps "do not hand-write a duty" but names the fork as the other thing `--from-skill` accepts. - "Limits" drops the scope sentence "When to use" already states verbatim and shortens the fork back-reference step 1 now carries. The body is capped at 12,000 chars and was at 11,995, so the additions had to pay for themselves; net -38, leaving 43. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Signed-off-by: kw <kahwai@pathdao.io>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
## Customizehas said since 1.2.0 that a mechanical condition — a candle close, an indicator, a second asset's price — is a fork. The numbered steps Butler actually walks never said so.Step 1 offered a strict binary — a knob, or
judgmentviaDCA_ESCALATE— and step 5 ended at "never hand-write the duty's code, the shim loads this skill'sduty.py". So on the canonical ask:a Butler following the procedure lands on
DCA_ESCALATE— an LLM wake on every run, forever — instead of the fork that computes the condition in code for free. The escape hatch existed; it was just in a section the duty path never reaches.Changes
judgmentonly when it needs a brain.--from-skillaccepts.## When to usealready states verbatim ("One asset, one direction, one cadence per duty") and shortens the fork back-reference that step 1 now carries.On the body budget
SKILL.md's body is capped at 12,000 chars and was at 11,995 — 5 to spare. The additions had to pay for themselves, which is what the Limits trim is for. Net −38, leaving 43 chars of headroom.validate.py --standalone --maintainerpasses.duty.pyis untouched, so replay behaviour is unchanged.Not fixed here
DCA_INTERVAL_SECONDShas a floor of 3600, so the 15m cadence in that example ask is below what this skill's own knobs allow — a forking Butler has to change the trigger too. Worth a follow-up: either lower the floor or say so in Limits.Companion PRs, same theme — the hub is a recipe Butler adapts, not a program it installs: Virtual-Protocol/butler-skills#19, Virtual-Protocol/butler-skill-copytrade#5, Virtual-Protocol/butler-skill-template#2.
🤖 Generated with Claude Code