Skip to content

feat(registry): register dca and copytrade - #33

Merged
kahwaipd merged 1 commit into
mainfrom
feat/register-dca-copytrade
Sep 21, 2026
Merged

kahwaipd merged 1 commit into
mainfrom
feat/register-dca-copytrade

Conversation

@kahwaipd

@kahwaipd kahwaipd commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

The v3 cutover emptied templates.json deliberately: every listed repo is cloned and validated by CI, so a repo may only be listed once it actually ships a validatable bundle — and on the day the schema changed, none did.

Both conversion PRs have since landed. butler-skill-dca is dca@2 (timer) and butler-skill-copytrade is copytrade@5 (trade), each a recipe.json + duty.py + README.md at its repo root, and each clean of the nine money verbs deleted on 2026-09-21 — both run acp trade through subprocess with a literal --idempotency-key.

Why it matters now

Until this lands the published index is "templates": [], so every recipe_search in the fleet answers outcome: "none" and Butler writes each duty as code from scratch. The registry exists and serves nothing.

What gets published

2 template(s) indexed, 3 alias(es)

The three aliases are dca@1, copytrade@3 and copytrade@4 → their current versions, which is what lets a duty whose stored env.RECIPE names an older ref keep its settings door.

Both refs are main, so the hourly publish re-resolves each to a commit and republishes whenever either template repo merges — a template update is not a PR here.

app-checkout and web-checkout stay unlisted: a checkout flow has no duty.py to validate yet.

Rebased

This branch originally also carried a fix for the re.compile / FORBIDDEN_CALLS bug. The same bug was fixed on main by #32, and the second copy is exactly what made this branch conflict — so the branch is now rebased onto main and reduced to its unique change, templates.json. Its two tests are dropped as well: the merged fix carries equivalent coverage in both directions.

Verified against the real repos

Not fixtures — --all clones both template repos at main:

check_registry      OK  copytrade = …/butler-skill-copytrade @ main
                    OK  dca       = …/butler-skill-dca @ main
validate --all      copytrade  OK
                    dca        OK
build_index --dry-run   2 template(s) indexed, 3 alias(es)
pytest              114 passed

🤖 Generated with Claude Code

The v3 cutover emptied templates.json deliberately — a repo may only be
listed once it actually ships a validatable bundle. Both conversion PRs
have landed: butler-skill-dca is dca@2 (timer), butler-skill-copytrade
is copytrade@5 (trade), each a recipe.json + duty.py + README.md at its
repo root, each clean of the money verbs deleted on 2026-09-21 (both
run `acp trade` through subprocess with a literal --idempotency-key).

Both refs are `main`, so the hourly publish re-resolves them and
republishes whenever either template repo merges. The build indexes 2
templates and 3 aliases (dca@1, copytrade@3 and copytrade@4 → their
current versions), which is what lets a duty filed against an older ref
still resolve its settings door.

Until this lands the published index is `"templates": []`, so every
recipe_search in the fleet answers `outcome: "none"` and Butler writes
each duty as code from scratch.

app-checkout and web-checkout stay unlisted: a checkout flow has no
duty.py to validate yet.

The validator fix this branch originally carried is dropped — the same
`re.compile`/FORBIDDEN_CALLS bug was fixed on main by #32, and keeping
a second copy is what made this branch conflict.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@kahwaipd
kahwaipd force-pushed the feat/register-dca-copytrade branch from e27df72 to 1075b8c Compare September 21, 2026 07:00
@kahwaipd kahwaipd changed the title Register dca and copytrade, and fix the validator bug that blocked them feat(registry): register dca and copytrade Sep 21, 2026
@kahwaipd
kahwaipd merged commit 920c1e7 into main Sep 21, 2026
1 check passed
@kahwaipd
kahwaipd deleted the feat/register-dca-copytrade branch October 5, 2026 08:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant